乱数を取得するには 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;
- FLOOR は切り捨てを行う関数です。
複数レコードに乱数を一括設定
次のように複数レコードに対して乱数を設定しても、全て同じ値になってしまいます。--乱数で更新
UPDATE [TestTable]
SET [RandValue] = RAND();
RAND関数は引数としてシード値を渡せるため、引数にレコード値を渡すことで、レコード毎に異なる乱数が設定されます。
改善例
--RANDのシード値に UserID を 指定して更新
UPDATE [TestTable]
SET [RandValue] = RAND([UserID]);
- 3行目: RAND の引数に UserID の値を渡しています。UserID が同一だと同じ乱数が生成されるので、ユニーク項目ではない場合は複数カラムを加算するなどの工夫が必要です。

検証環境
- Microsoft SQL Server 2019 (RTM-CU10) (KB5001090) - 15.0.4123.1 (X64) Mar 22 2021 18:10:24 Copyright (C) 2019 Microsoft Corporation Express Edition (64-bit) on Linux (Ubuntu 20.04.2 LTS) <X64>
- Docker image: mcr.microsoft.com/mssql/server:2019-latest
- Docker Desktop 3.3.1(63152)
- Docker Engine 20.10.5
- Microsoft SQL Server Management Studio v18.8(15.0.18369.0)
- Microsoft Windows 10 Pro Version 20H2 OS Build 19042.906 Experience: Windows Feature Experience Pack 120.2212.551.0