SQL Server - 乱数を取得する

乱数を取得するには RAND 関数を使用します。

乱数の取得方法

RAND 関数を呼ぶと、float型 で 0 ~ 1(1は含まない)の値を返します。
結果(0 ~ 1[1は含まない]) = RAND();

実行結果(SQL Server Management Studio) 実行結果

整数の範囲指定

範囲指定できる関数は用意されていないため、計算して求めます。

0 ~ 10 を返す

SELECT FLOOR(RAND() * 11) + 0;

1 ~ 9 を返す

SELECT FLOOR(RAND() * 10) + 1;

複数レコードに乱数を一括設定

次のように複数レコードに対して乱数を設定しても、全て同じ値になってしまいます。
--乱数で更新
UPDATE [TestTable]
    SET [RandValue] = RAND();

更新結果

RAND関数は引数としてシード値を渡せるため、引数にレコード値を渡すことで、レコード毎に異なる乱数が設定されます。

改善例

--RANDのシード値に UserID を 指定して更新
UPDATE [TestTable]
    SET [RandValue] = RAND([UserID]);
改善結果

検証環境

関連ページ