MS-SQL / SQL Server
RAND(ランダム)関数で乱数を取得する方法
乱数を取得する方法はRAND関数を使えば簡単にできる。
普通に下記のように作成して実行してみよう。
SELECT RAND()
0から1までの範囲の乱数がfloat型で取得できる。
では、0~99の数字をランダムで取得した場合!
SELECT CONVERT(int,RAND() * 100)
上記のようにすると0~99間の数字がランダムで取得できるのだ。
int型にconvertする理由は整数のみ取得するためだ。
理解ができない人は下記のようにconvertを除いて実行してみた方がいい。
SELECT RAND() * 100
実行してみればCONVERT(int)の意味が分かると思う。
では、0~14間の数字をランダムで取得したい場合は下記のように記述する。
SELECT CONVERT(int,RAND() * 15)
では、0~15間の数字をランダムで取得したい場合は下記のように記述する。
SELECT CONVERT(int,RAND() * 16)
うん??
良く見ると数字が「0」から始まる!
俺は「1」から取得したい!
1~15間の数字をランダムで取得したい場合は下記のように記述する。
SELECT CONVERT(int,RAND() * 15)+1
簡単でしょう?
これを利用して推薦番号取得などで良く使える!!