SQL Serverで指定範囲のランダムな数値を生成する
方法
ビューとUDFを1つづつ作ります。
--RAND()がFUNCTION内で使用できないので... CREATE VIEW V_RAND AS SELECT RAND() RND GO --UDF CREATE FUNCTION RANDNUM ( @START AS INT, @END AS INT ) RETURNS INT AS BEGIN RETURN (SELECT FLOOR(@START + (RND * (@END - @START + 1))) FROM V_RAND) END GO
使用例と結果
WITH T1 AS( SELECT 1 SEQ UNION ALL SELECT SEQ + 1 SEQ FROM T1 WHERE SEQ < 10 ) SELECT DBO.RANDNUM(1, 2) [1, 2], DBO.RANDNUM(1, 10) [1, 10], DBO.RANDNUM(-5, 5) [-5, 5] FROM T1 OPTION (MAXRECURSION 0)
1, 2 1, 10 -5, 5 ----------- ----------- ----------- 2 6 -4 1 10 -2 1 3 -4 1 4 5 2 6 -2 1 8 -5 2 2 -3 1 2 5 2 8 4 2 2 2 (10 行処理されました)
Work! Enjoy it!