2010-04-16 6 views

답변

5

이 작업을 수행하고 당신이 필요로하는 어떤 길이 그것의 문자열이 걸릴 수 : 8 자에 대한

select replace(newid(), '-', '') 

예를 :

select substring(replace(newid(), '-', ''), 1, 8) 
1

나는 고유 ID를 결합하여 이런 짓을했는지 임의의 숫자가있는 테이블에서 :

update [table] 
    set token = cast([id] as varchar(10)) + cast(cast(round((rand() * 500000000.0), 0) as int) as varchar(10)) 

varchar 크기와 배율을 조정하여 당신이 필요로하는 toekn 크기. 정확한 크기가 필요한 경우 결과 문자열을 약간 길게 만들고 하위 문자열을 사용하여 길이를 설정하십시오.

이것은 극도로 강하지 만 대부분의 경우 저에게 효과적입니다. 테이블의 id 필드를 사용하면 토큰이 고유하고 임의의 숫자로 인해 추측하기가 어렵습니다.

0

또 다른 가능한 솔루션 (SQL Server 용, 내가 NEWID()가 다른 DBMS에서 사용할 수 없습니다 생각하지만, 다른 유사한 기능을 사용) :

SELECT CONVERT(VARCHAR(10), RIGHT(NEWID(), 5)) 

NEWID() 함수는 SQL에 의해 생성 된 알파 숫자 ID를 반환 필요한 방식으로 사용할 수있는 서버.

나를 위해 잘 작동합니다.

관련 문제