【发布时间】:2017-10-30 12:02:58
【问题描述】:
非常简单的场景:
SELECT 'abc' as [field1]
,HASHBYTES('MD5','abc') AS [Hash]
INTO #test
创建表。 我运行这个:
SELECT * FROM #test
它按预期返回 1 条记录。
SELECT * FROM #test
WHERE [field1] = 'abc'
这将返回 1 条记录。我从 [Hash] 字段中复制值并再次查询:
SELECT * FROM #test
WHERE [Hash] = '0x900150983CD24FB0D6963F7D28E17F72'
这不会返回任何记录。为什么?哈希字段是否以任何特殊方式保存/处理?我预计它将是文本,我可以查询。有什么解决办法吗?
附: Hash LIKE '%%' 没有帮助。
【问题讨论】:
-
hashbytes返回一个varbinary,它最终出现在表格中。您正在将其与varchar进行比较。 -
[Hash] = 0x900150983CD24FB0D6963F7D28E17F72 -
varbinary 文字不包含在引号中。
标签: sql sql-server tsql hash