从字符串生成唯一ID

Bau*_*aub 0 t-sql sql-server sql-server-2008-r2

我正在尝试使用文本字符串并从中创建一个唯一的数值,我没有任何运气.

例如,我有用户名(第一个和最后一个)和生日.我试过取这些值并将它们转换为varbinary,它确实从数据中给出了一个数值,但它并不是唯一的.在大约700条记录中,我将获得至少100个重复的数值,但用于生成数字的名字,姓氏和生日的文本是不同的.

这是我一直在尝试的一些代码:

SELECT CONVERT(VARCHAR(300), CONVERT(BIGINT,(CONVERT(VARBINARY, SE.FirstName) +  CONVERT(VARBINARY, SE.BirthDate) ))) FROM ELIGIBILITY SE
Run Code Online (Sandbox Code Playgroud)

如果我使用该代码并转换以下数据,则结果为3530884780910457344.因此,从此唯一数据生成相同的数字:

David       12/03/1952
Janice      12/23/1952
Michael     03/24/1952
Mark        12/23/1952
Run Code Online (Sandbox Code Playgroud)

我正在寻找某种方式,越简单越好,从这些数据中获取这些值并生成唯一的数值.我之所以需要使用这些值作为输入是因为我试图避免在将来创建重复项,并且能够根据公式预测数值.这就是NewID()不适合我的原因.

Aar*_*and 6

怎么样简单:

SELECT CHECKSUM(name, BirthDate) FROM dbo.ELIGIBILITY;
Run Code Online (Sandbox Code Playgroud)

当然,由于仍然存在碰撞的机会,也许你应该更好地定义你实际上要做的事情.您已经说明了为什么例如NEWID()不起作用的原因但我仍然没有遵循这个唯一编号的基本目的.