2009-05-10 3 views
1

現在空のint列に重複のない乱数を設定するにはどうすればよいですか?データベース列に乱数を設定する方法

+1

いくつの数字ですか?数字はどんな範囲にあるべきですか?どのデータベースエンジンですか? –

+8

重複のない乱数は乱数ではありません。 –

+0

Microsoft SQLサーバー –

答えて

1

重複を防ぐために、列を主キーにすることができますが、これはハックです。後でキーを削除することができます。

---- Create the variables for the random number generation 
DECLARE @Random INT; 
DECLARE @Upper INT; 
DECLARE @Lower INT; 
DECLARE @Index integer 

---- This will create a random number between 1 and 999 
SET @Lower = 1 ---- The lowest random number 
SET @Upper = 999 ---- The highest random number 
SET @Index = 0 --- A while loop counter 

--- Loop from 0 to 10 
WHILE @Index < 10 
BEGIN 
    SELECT 'loop counter = ', @index 
    SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0) 
    --Insert @Random here. 
    SET @index = @index + 1 
END 
+0

大変ありがとうございます –

+0

OPは「重複はありません」と頼んだので、おそらくIF NOT EXISTSをどこかで使うべきです... – edosoft

9

これはあなたが新しいINT列を追加したために、既存のテーブルである場合、あなたはこのような何かを行うことができますが:

UPDATE MyTable 
SET MyIntColumn = CONVERT(int, RAND(CHECKSUM(NEWID())) * 10000); 

これは、1〜10000のランダムな数字で空の列を移入します。

+0

私は範囲が0〜9999の間だと思いますが、うまくいきます。私はそれが何をしているのだろう...あなたはちょうど同じ番号を永遠に得る 'チェックサム(NEWID())の部分なし。私はあなたが異なる値を得るために異なる値で種を付ける必要があると思いますか? –

関連する問題