兰德(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 数据库

返回一个伪随机 浮点数 值,从 01,排他。

Transact-SQL 语法约定

语法

RAND ( [ seed ] )

注意

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

参数

seed

一个整数 表达式tinyintsmallintint),用于给出种子值。 如果未指定 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()函数乘以整数值来扩展随机浮点的范围。 以下示例返回一个介于010之间的随机浮点数。

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT @Constant * RAND() AS RandomNumber;
GO

D. 生成随机整数

你可以通过对 RAND() 函数进行缩放并与 ROUND()FLOOR()CEILING() 函数组合来生成随机整数值。 以下示例返回一个介于 010之间的随机整数,包含。

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