2011-04-27 68 views
0

我想爲我的數據庫中的所有人生成一個隨機SSN,但是我這樣做有點困難。TSQL foreach query

這是我使用的查詢:

UPDATE tblTenant SET SSNO = (
    SELECT 
     CAST(A.A as CHAR(1)) + CAST(A.B as CHAR(1)) + CAST(A.C as CHAR(1)) + '-' + 
     CAST(A.D as CHAR(1)) + CAST(A.E as CHAR(1)) + '-' + 
     CAST(A.F as CHAR(1)) + CAST(A.G as CHAR(1)) + CAST(A.H as CHAR(1))+ CAST(A.I as CHAR(1)) 
    FROM 
     (SELECT CAST(RAND() * 10 AS TINYINT) as A, CAST(RAND() * 10 AS TINYINT) as B, CAST(RAND() * 10 AS TINYINT) as C, CAST(RAND() * 10 AS TINYINT) as D, CAST(RAND() * 10 AS TINYINT) as E, CAST(RAND() * 10 AS TINYINT) as F, CAST(RAND() * 10 AS TINYINT) as G, CAST(RAND() * 10 AS TINYINT) as H, CAST(RAND() * 10 AS TINYINT) as I) as A 
    ); 

它正常工作產生隨機SSN,但它只能執行一次,即每個人都得到相同的SSN。

我該如何讓每個用戶都能生成一個新的隨機SSN?

回答

1

試試這個:

UPDATE tblTenant 
SET SSNO = RIGHT('000'+CAST(ABS((CAST(NEWID() AS VARBINARY))%(1000)) AS VARCHAR(3)),3)+'-'+ 
     RIGHT('00'+CAST(ABS((CAST(NEWID() AS VARBINARY))%(100)) AS VARCHAR(2)),2)+'-'+ 
     RIGHT('0000'+CAST(ABS((CAST(NEWID() AS VARBINARY))%(10000)) AS VARCHAR(4)),4)