学而实习之 不亦乐乎

SQL Server函数:RAND()

2021-09-24 08:31:35

语法

RAND ( [ seed ] )

参数:seed,提供种子值的整数表达式(tinyint、smallint 或 int)。 如果未指定seed,则SQL Server数据库引擎随机分配种子值。对于指定的种子值,返回的结果始终相同。

返回类型:float。 返回一个介于0到1(不包括 0 和 1)之间的伪随机float值。

注意:

  1. 使用同一个种子值重复调用RAND()会返回相同的结果。
  2. 对于一个连接,如果使用指定的种子值调用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