3

我正在尝试使用 hashbytes 命令更新 SQL Server r2 上的列。这是命令的简化版本:

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

问题是,它会在所有字段中写入这样的奇怪字符:

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

但是,如果我进行选择(使用相同的字段):

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

它返回一个正确的字符串:

0x9849FDB80C17B64322DA094BE963A963

任何人都知道它为什么会这样做。我已经尝试过测试数据库并且更新命令按预期工作。但它不适用于我们的生产服务器。

4

1 回答 1

4

The reason you are getting this is because HASHBYTES returns a binary data type, and this is not text.

Using the build in function fn_varbintohexstr you can convert the binary data into text, as follows:

UPDATE [tbl] SET [checksum] = master.dbo.fn_varbintohexstr(HASHBYTES('MD5',[field1]))
于 2013-03-18T15:46:13.280 回答