適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
Microsoft Fabric 中的 SQL 資料庫
回傳一個偽隨機 浮點數 值,從 0 到 1,排他。
Syntax
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式時,所有受影響的數據列都會取得相同的值。
範例
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()函數與整數值相乘來縮放隨機浮點的範圍。 以下範例回傳一個介於 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