2010-05-17 163 views
2

我正在使用SQL Server 2005,請告訴我如何獲取表中每行的6位數(應該是隨機的唯一數字)值。如何在SQL Server中獲取數字隨機唯一ID

我有一個表中的字段,其中我需要6位數字值(隨機和唯一)。

請幫我這麼做。

+0

6位值不會是非常獨特的,現在是什麼呢? – 2010-05-17 06:45:51

+0

實際上需要一個隨機的6位數值,並且對於表 – 2010-05-17 06:47:38

+0

中的每一行都是唯一的,實際上它將是一個「擴展」到電話號碼..所以不能超過那個值 – 2010-05-17 06:48:17

回答

5
SELECT ABS(CHECKSUM(NEWID())) % 999999 

一個電話號碼:

SELECT RIGHT('000000' + CAST(ABS(CHECKSUM(NEWID())) % 999999 AS varchar(6)), 6) 

NEWID大約是隨機的,因爲你可以在SQL Server中獲得。

但是,如果你想要唯一的,你也可以從000000開始並轉到999999.任何隨機生成器將會擊中birthday problem

你可以有獨特的或隨機的是可靠的,但不能同時可靠

+1

不保證這不會產生重複 – 2010-05-17 06:53:25

+0

@Mitch小麥:我延長我的回答,因爲你評論 – gbn 2010-05-17 06:55:15

+0

選擇左('000000'+ CAST(ABS(CHECKSUM(NEWID()))999999 AS varchar(6)) ,6)總是給我000000,沒有其他結果 – 2010-05-17 07:13:46