2013-03-18 4 views
3

hashbytes 명령을 사용하여 SQL Server r2에서 열을 업데이트하려고합니다. 다음은 명령의 단순화 된 버전입니다 :SQL hashbytes update 문이 예상대로 수행되지 않습니다.

COMMAND: "UPDATE [tbl] SET [checksum] = HASHBYTES('MD5',[field1])" 

문제는, 모든 필드에이 같은 이상한 문자를 쓰는 것입니다 :

"˜Iý¸¶C"KéS©c"

그러나 나는 사용 (A 선택을 할 경우 같은 필드) :

select HASHBYTES('MD5',[field1]) from [tbl]; 

그것은 올바른 문자열 반환

,691을
0x9849FDB80C17B64322DA094BE963A963 

누구나 그 이유를 알 수 있습니다. 테스트 데이터베이스에서 시도한 및 업데이트 명령을 예상대로 작동합니다. 그러나 우리 프로덕션 서버에서는 작동하지 않습니다.

답변

2

HASHBYTES가 이진 데이터 형식을 반환하기 때문에이 문제가 발생하는 이유는 텍스트가 아니기 때문입니다. 완벽하게

UPDATE [tbl] SET [checksum] = master.dbo.fn_varbintohexstr(HASHBYTES('MD5',[field1])) 
+0

작품 : 다음과 같이, 텍스트로 이진 데이터를 변환 할 수 있습니다 fn_varbintohexstr 함수에서 빌드를 사용

. 감사! – adamkylegreen

관련 문제