2

xxANSI 列と xxMD5 列を持つテーブル TBLxx があります。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

あなたの問題は、ハッシュバイトの結果をVARCHAR列に挿入していることだと思います。BINARYhashbytes の結果を格納するには type を使用する必要があります。

違いを見ます:

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