Varbinary在where子句中无法正常工作

时间:2013-07-26 20:23:38

标签: sql-server sql-server-2012 varbinarymax

我有这个选择查询给出输出“0x38F0A2D294A4AEBD1648C952D910AC51C40FE7”

SELECT HASHBYTES ('SHA1',CAST(54 AS varchar)+CAST(1 AS varchar)
+CAST('2013-07-26 16:30:49.9786317' AS varchar)+CAST(1 AS varchar))

即使知道什么是SQL服务器,我也无法将列与值进行比较。我这样做:

SELECT 'Worked!'
WHERE  HASHBYTES ('SHA1',CAST(54 AS varchar)+CAST(1 AS varchar)+
CAST('2013-07-26 16:30:49.9786317' AS varchar)+CAST(1 AS varchar))=0x38F0A2D294A4AEBD1648C952D910AC51C40FE7

这根本行不通。奇怪的是,当值不同时,它适用于其他情况。

1 个答案:

答案 0 :(得分:0)

试试这个:

declare @Hashthis nvarchar(2000)
SELECT @Hashthis=HASHBYTES ('SHA1',CAST(54 AS varchar)+CAST(1 AS varchar)
+CAST('2013-07-26 16:30:49.9786317' AS varchar)+CAST(1 AS varchar))

SELECT 'Worked' where HASHBYTES ('SHA1',CAST(54 AS varchar)+CAST(1 AS varchar)
+CAST('2013-07-26 16:30:49.9786317' AS varchar)+CAST(1 AS varchar))=@Hashthis