2013-07-26 4 views
-1

У меня есть этот запрос на выборку, который дает выход «0x38F0A2D294A4AEBD1648C952D910AC51C40FE7»Varbinary не работает correcly в пункте, где

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 

Это просто не работает. Странная часть заключается в том, что она работает для других случаев, когда значения различны.

+2

не ответ на ваш вопрос, но [не используйте 'varchar' без длины] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/ 10/09/плохой-привычки к ножному объявляющему-VARCHAR-без-length.aspx). –

ответ

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))[email protected] 
+0

действительно работа. Но кто-то может сказать мне, почему это доцент работает по-другому? Этот способ имеет проблемы с производительностью? – Higarian

+0

Идти к этому. благодаря! – Higarian

Смежные вопросы