TSQL 코드에서 HASHBYTES()를 사용하는 방법은 무엇입니까?HASHBYTES() function
내 코드의 문제는
UPDATE mytable
SET hash_value=HASHBYTES('MD5',convert(varchar(max),col1),convert(varchar(max),col2),..)
반환 NULL
입니다. 코드에 어떤 문제가 있습니까?
TSQL 코드에서 HASHBYTES()를 사용하는 방법은 무엇입니까?HASHBYTES() function
내 코드의 문제는
UPDATE mytable
SET hash_value=HASHBYTES('MD5',convert(varchar(max),col1),convert(varchar(max),col2),..)
반환 NULL
입니다. 코드에 어떤 문제가 있습니까?
HASHBYTES은 두 가지 인수를 취합니다. 첫 번째는 해싱 알고리즘 (MD2 | MD4 | MD5 | SHA | SHA1
)이고 두 번째는 해시 값입니다. 알고리즘에 다른 값이 있으면 결과적으로 NULL
이됩니다.
두 번째 매개 변수의 값이 NULL
인 경우 결과적으로 NULL
이 표시됩니다.
아마도 이런 식으로 사용할 수 있습니다.
hashbytes('MD5', coalesce(convert(varchar(max),col1), '') +
coalesce(convert(varchar(max),col2), '') +
...)
는
+
으로 문자열을 연결하고
NULL
값을 처리하는
coalesce
를 사용한다.
UPDATE mytable SET hash_value = HASHBYTES ('MD5', convert (varchar (max), col1), convert (varchar (max), col2), ..) –
결과는 NULL입니다. –
@pawan - 두 개 이상의 매개 변수를 가질 수 없습니다. –
코드 예에서 col1이 무엇인지 알지 못하면이 질문에 대답하지 못할 수도 있지만 HASHBYTES
의 첫 번째 인수는 algorithm
이어야합니다.
MSDN에서 구문은 다음
HashBytes ('<algorithm>', { @input | 'input' })<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1
편집, 그것은 MSDN 문서는 입력 매개 변수 문자열 또는 varchar 형, NVARCHAR 또는 VARBINARY의 변수에 대한 참조 하나 인 것을 설명이다 단일 입력. 여러 입력 매개 변수를 전달 중입니다. 그러나 놀랍게도 나는 당신이 null이 오히려 오류가 내가 시도하고 때 실행하려고하면 The hashbytes function requires 2 argument(s).
입니다. NULL 결과를 얻는 가장 큰 원인은 입력 값이 null, 즉 varchar로 변환하려는 열이 null 인 경우입니다. select hashbytes('md5', convert(varchar(max), null))
을 실행하면 NULL
결과가 표시됩니다.
UPDATE mytable SET hash_value = HASHBYTES ('MD5', convert (varchar (max), col1), convert (varchar (max), col2), ..) –
UPTATE mytable SET hash_value = HASHBYTES ('MD5', convert (varchar (max), col1), convert (varchar (max), col2), ..) –
MD5 알고리즘을 사용했습니다 –
열을'varchar (max)'로 변환해야하는 이유는 무엇입니까? 전체 입력은 [8000 바이트]로 잘립니다. (http://msdn.microsoft.com/en-us/library/ms174415.aspx) –