2014-01-17 248 views
0

我想要一個文本字符串並從它創建一個唯一的數值,我沒有任何運氣。從字符串生成唯一的ID

例如,我有用戶名(第一個和最後一個)和生日。我試圖把這些值和轉換爲varbinary,這從數據給我一個數值,但它不是唯一的。在約700條記錄中,我將至少得到100個重複的數值,但用於生成數字的名字,姓氏和出生日期的文本是不同的。

下面是一些代碼,我一直在努力:

SELECT CONVERT(VARCHAR(300), CONVERT(BIGINT,(CONVERT(VARBINARY, SE.FirstName) + CONVERT(VARBINARY, SE.BirthDate)))) FROM ELIGIBILITY SE 

如果我使用的代碼,並轉換以下數據,結果是3530884780910457344.所以從這個獨特的數據生成同一個號碼:

David  12/03/1952 
Janice  12/23/1952 
Michael  03/24/1952 
Mark  12/23/1952 

我正在尋找一些方法,越簡單越好,採取這些值,並從該數據生成一個唯一的數值。我之所以需要使用這些值作爲輸入,是因爲我試圖避免在將來創建重複項,並且能夠根據公式預測數值。這就是爲什麼NewID()不適合我的原因。

+0

您需要通過將它們轉換爲char的方式來創建長度相同的varchar列 – Jayvee

回答

5

如何簡單:

SELECT CHECKSUM(name, BirthDate) FROM dbo.ELIGIBILITY; 

當然,因爲還是有機會的碰撞,也許你應該更好地定義什麼你實際上是試圖做。你已經說明了一些原因,例如NEWID()不起作用,但我仍然沒有遵循這個唯一編號的基本目的。