如果插入表V中,则得到不同的HASHBYTES(MD5)值。在SELECT语句中应用相同的函数

时间:2013-04-22 08:08:12

标签: sql-server-2008

我有一个表格TBLxx,列xxANSI和xxMD5 我在下面用来计算xxANSI的校验和MD5

update i
  set [xxMD5] = HASHBYTES ('MD5', [xxANSI])
from TBLxx i

我在MD5专栏中得到的结果是一组特殊的字符,例如“#8U3š”PÍÛ'>÷,¤Ä“ 而如果我在应用HASHBYTES函数时对该列进行选择,则得到一个值“0x233855339A5D50CD0CDB279BF782A4C4”

select top 1 xxANSI, xxMD5, hashbytes('MD5', xxMD5)
from TBLxx

"saco_other_test", "’3è@GÔ¦l
VŒ$t>", "0x169233E8401947D4A66C0D568C24743E"

(列xxMD5的值中有一个换行符,这是上面换行的原因)

有谁知道为什么会这样?我怎么能避免这个?我想在表格栏中输入“0x169233E8401947D4A66C0D568C24743E”这样的值。

提前致谢

1 个答案:

答案 0 :(得分:1)

我认为您的问题可能是您正在将哈希字节结果插入VARCHAR列。您应该使用BINARY类型来存储哈希字节结果。

看到区别:

select hashbytes('MD5','saco_other_test') 
select cast(hashbytes('MD5','saco_other_test') as varchar(255))