产生一个5位随机数插入到表A的字段A中,但不能与字段A中数据重复, 也就是说新产生的随机数是以前没有产生过的。测试前建立表TB,字段RndNum,类型int ======================================= DECLARE @a int, @b bit SET @b = 0 WHILE @b = 0 BEGIN SELECT @a = Cast(rand() * 100000 AS int) print @a if not exists (SELECT * FROM TB WHERE RndNum = @a ) BEGIN INSERT INTO tb (RndNum) VALUES (@a) SET @b = 1 END END
也就是说新产生的随机数是以前没有产生过的。测试前建立表TB,字段RndNum,类型int
=======================================
DECLARE @a int, @b bit
SET @b = 0 WHILE @b = 0
BEGIN
SELECT @a = Cast(rand() * 100000 AS int)
print @a if not exists (SELECT * FROM TB WHERE RndNum = @a )
BEGIN
INSERT INTO tb (RndNum) VALUES (@a)
SET @b = 1
END
END
不好意思丫,你的这方法有时产生的随机数怎么是四位数?
或创建试图来实现直接用rand() 在一个程序段里会返回同样的值
select 10000 + abs(checksum(newid()) % 90000) from sysobjects
select cast(10000+90000*rand() as int) from sysobjects
就会明白它们之间的区别了