SQL Server函数:RAND()
语法
RAND ( [ seed ] )
参数:seed,提供种子值的整数表达式(tinyint、smallint 或 int)。 如果未指定seed,则SQL Server数据库引擎随机分配种子值。对于指定的种子值,返回的结果始终相同。
返回类型:float。 返回一个介于0到1(不包括 0 和 1)之间的伪随机float值。
注意:
- 使用同一个种子值重复调用RAND()会返回相同的结果。
- 对于一个连接,如果使用指定的种子值调用RAND(),则RAND()的所有后续调用将基于使用该指定种子值的RAND()调用生成结果。
实例分析
--执行
select rand()
--返回
0.36361513486289558
--生成0-100之间的整数:
select cast( floor(rand()*100) as int)
23
--生成的3个随机数不同
SELECT RAND(), RAND(), RAND()
--返回
0.100505471175005 0.292787286982702 0.868829058415689
--生成的3个随机数相同
SELECT RAND(100), RAND(100), RAND(100)
--返回
0.715436657367485 0.715436657367485 0.715436657367485
--执行
SELECT [ID],CAST(FLOOR(RAND()*100) AS INT) AS RANDNUM FROM [dbo].[TEST]
--返回,注意返回值,RAND产生的整数都是一样的,所以用的时候一定要注意到这一点。
ID RANDNUM
2 88
3 88
4 88
5 88
6 88
8 88
9 88
10 88
... ...
参考:
取随机整数的其他方法:
--生成0-99之间的随机整数
SELECT FLOOR(RAND()*100)
--返回
12.0
--生成0-99之间的随机整数
SELECT CAST( FLOOR(RAND()*100) AS INT)
--返回生成的数是这样的
12
--生成1-100之间的随机整数
SELECT CEILING(RAND() * 100)
--返回
12.0
--生成1-100之间的随机整数
SELECT CAST(CEILING(RAND()*100) AS INT)
--返回
12
--生成100-999之间的随机整数
SELECT FLOOR(RAND()*900)+100