ランダムな INT 値を返すユーザー定義関数です。
RAND() 関数を利用しています。
■書式
- dbo.RandInt(最小値, 最大値)
- 例: SELECT dbo.RandInt(0, 10)
■NewIdInt 関数との違い
NewIdInt 関数と、RandInt関数は、元となる乱数生成方法が異なります。
目的にあわせてお使いいただければと思います。
■注意
ユーザー定義関数は、本来 決定的である必要があります。
つまり、同じ引数に対して、常に同じ結果を返す必要があります。
しかし、このRandInt は、常に異なる値を返します。
したがって、SQL Server のクエリープロセッサが RandInt をうまく処理できない場合も考えられます。
■関数定義
RandInt 関数は、ビューをひとつ必要とします。
CREATE VIEW RandView
AS
SELECT RAND() AS ID
GO
-- RAND を利用してランダムな INT を返します
CREATE FUNCTION RandInt
(
@MinValue int, -- 最小値
@MaxValue int -- 最大値
)
RETURNS INT
AS
BEGIN
DECLARE @id INT
-- RandView をクエリーし、結果を INT に変換します
SELECT @id = convert(int, ID * (@MaxValue - @MinValue + 1)) + @MinValue FROM RandView
RETURN @id
END