2014-01-17 3 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()는 작동하지 않지만 여전히이 고유 번호의 기본 용도를 따르지 않습니다.