关于产生随机数的问题

liuweijing 2006-12-15 12:29:48
CREATE proc customer_add
@number int, --产生随机数的数量
as
declare @i int
declare @customerid int ---卡号
declare @password int ---密码
select @i=1
while @i<=@number
begin
select @customerid=convert(int,rand()*899999999)+10000000
select @password=convert(int,rand()*899999999)+10000000
insert into customer(customerid,password) values @customerid,@password)
select @i=@i+1
end
现在这段代码可以产生随机数,但是有个问题就是万一我产生的随机数相同了,那该怎么办呀,还有就是如果我customer表里已经有这个卡号了,那又会重复了,我想过每次产生的卡号到数据数里面查一下,看看是不是在,在的话就重新产生,但是我不知道这样子的想法,应该怎么实现,因为我对SQL 不是很熟,希望各位高手帮帮忙.
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuweijing 2006-12-15
  • 打赏
  • 举报
回复
用当时间跟我这个业务有问题的,因为要规定多少位的,而且次不是连续的,那位大哥能把我的代码修改一下呀
tmc1703 2006-12-15
  • 打赏
  • 举报
回复
或者在插数据的时候先找下是否存在,如果存在就+1,不存在就直接插入数据
tmc1703 2006-12-15
  • 打赏
  • 举报
回复
使用当前时间精确到秒做为随机数不就好了
xiaoku 2006-12-15
  • 打赏
  • 举报
回复
以上 得到的 不一定就 具有 要求产生随机数 的数量...可能会少一点...

另外一点建议是:这个表应该还有个字段做为 插入的时间 ,那样你才能区分出那些 是什么时候插入的...
xiaoku 2006-12-15
  • 打赏
  • 举报
回复
CREATE proc customer_add
@number int, --产生随机数的数量
as
declare @i int
declare @customerid int ---卡号
declare @password int ---密码
select @i=1
while @i<=@number
begin
/*
select @customerid=convert(int,rand()*899999999)+10000000
select @password=convert(int,rand()*899999999)+10000000
你在这里产生的数也一定具有固定的位数阿...你少了一个0
*/
insert into customer(customerid,password) values @customerid,@password)
select @i=@i+1
end

--改一下..
CREATE proc customer_add
@number int, --产生随机数的数量
as
declare @i int
declare @customerid int ---卡号
declare @password int ---密码
select @i=1
while @i<=@number
begin
--先判断
select @customerid=convert(int,rand()*899999999)+100000000
select @password=convert (int,rand()*899999999)+100000000
if not exists (select 1 from customer where customerid =convert(int,rand()*899999999)+100000000)
begin
insert into customer(customerid,password) values @customerid,@password)
end
select @i=@i+1
end

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧