生成唯一的9位数值

时间:2011-09-02 14:35:30

标签: sql-server-2008 sql-server-2008-r2

我有一张如下表所示的表格:

Group           
---------------------------     
Id  Num         Name    Age
---------------------------
1   424000000   Damine  22
2   324000000   Arshley 18
3   276000000   Tita    20
4   424000000   Helen   21
5   424000000   Mary    19
6   324000000   Kathe   20
7   324000000   Mark    18
8   276000000   Phill   22

我想让Num col唯一,所以我需要为重复项生成9位数字随机值。

请帮助,谢谢

3 个答案:

答案 0 :(得分:3)

您将num列设置为具有100000000种子的标识字段,或者只是将num字段设置为标识并使用重载的tostring方法打印其值

更新:通过Management Studio执行此操作(添加标识列)将删除并重新创建表,不建议在非常大的表上使用

答案 1 :(得分:1)

WITH u AS
(
 SELECT *, new_num = ROW_NUMBER() 
  OVER (PARTITION BY Num ORDER BY Id)
  FROM dbo.Group
)
UPDATE u SET Num += new_num - 1
FROM u
WHERE new_num > 1;

答案 2 :(得分:0)

没有经过测试......但是那样......

SELECT 
    CONVERT(VARCHAR(9), RIGHT(NEWID(), 9)) AS [MyID] 
WHERE 
    LEFT([MyID], 1) NOT LIKE '0';