SQLで乱数を使ってテストデータを作る
SQLServerには乱数を求めるRAND関数があるので、これを使ってテストデータを作れそうだが、ちょっと簡単ではなかった。
まずテストデータを登録する1000行のテーブルを作る。
英語の点数をRAND関数を使って埋めてみよう。update文を使えば1行で書ける。
書けるのだが、、、結果を見るとすべて同じ値になっている。これはいけない。
RAND関数の引数を指定すると、違う値が得られるはずなので書き換えてみる。
しかし、2行目以降はみな同じ値だった。これは使えないなあ。
SQLServer2005以降のRAND関数は、1文の中では同じ値しか返さないらしい。
まずテストデータを登録する1000行のテーブルを作る。
英語の点数をRAND関数を使って埋めてみよう。update文を使えば1行で書ける。
update [aサンプルテスト結果] set [英語] = 100 * rand()
書けるのだが、、、結果を見るとすべて同じ値になっている。これはいけない。
RAND関数の引数を指定すると、違う値が得られるはずなので書き換えてみる。
update [aサンプルテスト結果] set [英語] = 100 * rand([no])
しかし、2行目以降はみな同じ値だった。これは使えないなあ。
SQLServer2005以降のRAND関数は、1文の中では同じ値しか返さないらしい。
となると、ループを回すしかなさそう。上のヘルプにあるサンプルコードを参考に書いてみる。
DECLARE @counter smallint
SET @counter = 0
WHILE @counter < 1000
BEGIN
update [aサンプルテスト結果] set [英語] = rand() * 100
where [no] = @counter
SET @counter = @counter + 1
END
GO
結果を見ると、いい感じにランダムな値になっている。
コメント
コメントを投稿