共用方式為


蘭德(Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 資料庫

回傳一個偽隨機 浮點數 值,從 01,排他。

Transact-SQL 語法慣例

Syntax

RAND ( [ seed ] )

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

引數

seed

一個整數 表達式tinyintsmallintint),用來給出種子值。 如果未指定 seed,SQL Server 資料庫引擎 會隨機指派種子值。 只要指定初始值之後,傳回的結果一律相同。

傳回類型

float

備註

具有相同種子值的重複呼叫 RAND() 會傳回相同的結果。

  • 如果是一個連接,如果RAND()以指定的種子值呼叫,則所有後續呼叫都會根據植入RAND()的呼叫RAND()產生結果。 例如,下列查詢一律會傳回相同的數位序列。

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • 當您在 或 RAND() 查詢中使用 UPDATEINSERT式時,所有受影響的數據列都會取得相同的值。

範例

A。 創造四個不同的隨機數字

下列範例會產生函式所產生的 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() 函數總是回傳 0,而 CEILING() 函數總是回傳 1

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