2

我有一个表 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”之类的值。

提前致谢

4

1 回答 1

1

我认为您的问题可能是您将 hashbytes 结果插入VARCHAR列。您应该使用BINARYtype 来存储 hashbytes 结果。

看到不同:

select hashbytes('MD5','saco_other_test') 
select cast(hashbytes('MD5','saco_other_test') as varchar(255))
于 2013-04-22T08:13:56.257 回答