适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric 中的 SQL 数据库
返回一个伪随机 浮点数 值,从 0 到 1,排他。
语法
RAND ( [ seed ] )
注意
Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
参数
seed
一个整数 表达式 (tinyint、 smallint 或 int),用于给出种子值。 如果未指定 seed,则 SQL Server 数据库引擎随机分配种子值。 对于指定的种子值,返回的结果始终相同。
返回类型
float
注解
使用同一个种子值重复调用 RAND() 会返回相同的结果。
对于一个连接,如果使用指定的种子值调用
RAND(),则RAND()的所有后续调用将基于使用该种子值的RAND()调用生成结果。 例如,以下查询将始终返回相同的数字序列。SELECT RAND(100), RAND(), RAND();在
RAND()或UPDATE查询中使用INSERT函数时,所有受影响的行都会获得相同的值。
示例
答: 创造四个不同的随机数
以下示例将产生由 RAND() 函数生成的四个不同的随机数。
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B. 随机生成0或1
以下示例使用该 ROUND() 函数随机返回或 01。
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
注意
在这个例子中,FLOOR()函数总是返回 ,而函数CEILING()总是返回 01。
C. 生成大于1的随机数
你可以通过将RAND()函数乘以整数值来扩展随机浮点的范围。 以下示例返回一个介于0和10之间的随机浮点数。
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. 生成随机整数
你可以通过对 RAND() 函数进行缩放并与 ROUND()、 FLOOR()或 CEILING() 函数组合来生成随机整数值。 以下示例返回一个介于 0 和 10之间的随机整数,包含。
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
FLOOR(@Constant * RAND()) AS SecondRandomInteger,
CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO
E. 向表格中插入随机值
以下示例将随机 的整数、 浮点数和 位 值填充表变量。
DECLARE @RandomTable TABLE (
RandomIntegers INT,
RandomFloats FLOAT,
RandomBits BIT);
DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;
SET @RowCount = 10;
SET @Counter = 1;
WHILE @Counter <= @RowCount
BEGIN
INSERT INTO @RandomTable
VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
SET @Counter = @Counter + 1;
END
SELECT *
FROM @RandomTable;
GO