2010-05-17 166 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