【发布时间】:2017-04-24 13:05:09
【问题描述】:
我正在尝试使用另一列的哈希更新我的 SQL Server user 表中的新列。
当我使用 select 语句测试转换时,它将返回我从在线哈希生成器获得的正确 MD5 哈希。
select CONVERT(VARCHAR(32), HashBytes('MD5', 'valuetohash'), 2)
当我在如下所示的更新语句中使用相同的转换时,我得到一个不同的值,然后插入具有相同哈希值的 select 语句。
UPDATE users SET [newcolumn1] = CONVERT(VARCHAR(32), HashBytes('MD5', column1), 2)
我做错了什么?
【问题讨论】:
-
你的专栏
column1是什么类型的? -
您的数据也可能包含空格或不可打印的字符,这会改变哈希值
-
原来这是 column1 是 nvarchar 的问题。但是我似乎不能使用 nvarchar 是哈希。完成这项工作的唯一方法是在不是 nvarchar 的列上使用它,这意味着我不能允许双字节字符。
标签: sql-server hash md5