应用实例,生成1000个5位的不重复随机数
来源:互联网 发布:网络侵害名誉权 编辑:程序博客网 时间:2024/06/05 02:15
表的字段为: ID、会员卡号、卡类型、密码
会员卡 13000张 卡号不能重复
卡号要求为:长度为12位数 2000001013000——2000001000001
密码随机生成
贵宾卡:5000张 卡号不能重复
卡号要求为:长度为12位数 3000001005000——3000001000001
密码为随机生成
金卡:1500张 卡号不能重复
卡号要求为: 长度为12位数 5000001001500——5000001000001
密码为随机生成
白金卡:1000张 卡号不能重复
卡好要求为:长度为12位数 6000001001000——6000001000001
密码为随机生成
钻石卡:500张 卡号不能重复
卡号要求为: 长度为12位数 7000001000500——7000001000001
密码为随机生产
--------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_rand]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_rand]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_rand]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[v_rand]
GO
--需要这样一个视图
create view v_rand as select re=rand()
go
/*----取得指定上下限的随机数
--邹建 2003.12(引用请保留此信息)--*/
/*--调用示例
select dbo.f_rand(10,100),dbo.f_rand(10,100)
--*/
create function f_rand(
@下限 int,
@上限 int
)
returns decimal(38,0)
as
begin
declare @r decimal(38,0)
select @r=cast(re*(@上限-@下限)+@下限 as decimal(38,0)) from v_rand
return(@r)
end
go
/*--应用实例,生成1000个5位的不重复随机数--*/
--生成随机数用到的临时表
create table #t(随机数 int unique) --用唯一约束保证不重复
go
--生成1000个5位的不重复随机数(错误提示不要理会,这是正常的)
declare @i int
set @i=1000 --1000要要生成的随机数的数量
while @i>0
begin
set rowcount @i
insert #t select dbo.f_rand(10000,99999) from sysobjects
set @i=@i-@@rowcount
end
set rowcount 0
--显示结果
select count(*) from #t
go
--删除测试
drop table #t
--自定义函数:取得指定上下限的随机数
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_rand]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_rand]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_rand]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[v_rand]
GO
--需要这样一个视图
create view v_rand as select re=rand(),re2=replace(cast(newid() as varchar(36)),'-','')
go
--自定义函数:取得指定上下限长度的随字符串
create function f_rand(
@最小 int,--最小长度(范围1-32)
@最大 int--最大长度(范围1-32)
)returns varchar(32)
as
begin
declare @r varchar(32)
select @r=left(re2,re*(@最大-@最小)+@最小) from v_rand
return(@r)
end
go
--调用示例
select dbo.f_rand(2,10),dbo.f_rand(2,10)
- 应用实例,生成1000个5位的不重复随机数
- 生成5个不重复的随机数
- 生成N个不重复的随机数
- 生成N个不重复的随机数
- [原创] T-SQL生成X个不重复的Y位长度的随机数
- T-SQL生成X个不重复的Y位长度的随机数
- 如何生成6位不重复的随机数
- sql如何生成不重复的随机数以及有效位
- 生成及排序一百万个不重复的随机数,随机数范围 [0, 1000 0000)
- 生成四位随机数,数字不重复
- C#生成N位不重复随机数
- uuid生成12位随机数 不重复
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- 自动下载shell脚本
- 一段jquery代码
- 托管与非托管间的代码级桥梁——C++/CLI
- 以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号
- linux sd卡驱动分析,基于mini2440,sdio mmc sd卡驱动编写
- 应用实例,生成1000个5位的不重复随机数
- 用存储过程实现的分页程序
- 用户自动生成规则用户名和随机密码
- 练习-C语言恶搞程序
- 执行aspnet_regiis -i时出现错误:'没有启动服务器服务'
- Control Master简介
- 在文本文件中追加数据
- 逐记录导出text ntext字段值为文本文件
- 自动迁离的脚本(自动实现分离+复制文件+附加)