河端善博 ブログ / SQL Server / PASSJ

SQL Server, .NET, PASSJ

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  945 投稿数 :: 112 ストーリー :: 1482 コメント :: 596 トラックバック

ニュース

Windows Live Alerts
My Yahoo!に追加
Add to Google dotnetnuke.jp
NPOPLUS.JP
MVP
PASSJ

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

ランダムな 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
投稿日時 : 2004年4月16日 13:52

コメントを追加

# NewIdInt 関数, RandInt関数のテスト 2004/04/16 14:11 河端善博の .TEXT でウェブログ
NewIdInt 関数, RandInt関数のテスト

コメント

タイトル:
名前:
Url:
コメント: