Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Странное поведение  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 591
Вычисляю хэш таким образом

SELECT HASHBYTES('SHA1', Part1 + Part2 + Part3), Part1 + Part2 + Part3 FROM table1.

Получаю некоторое значение хэша и строку. Тупо копирую строку из Management Studio и затем запускаю

SELECT HASHBYTES('SHA1', 'Скопированная строка')

Получаю совсем другой хэш. В чём фокус?
4 дек 15, 16:58    [18515065]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Очень лысый, вопрос для размышления: какого типа у вас поля Part1, Part2, Part3 и какого типа скопированная из студии строка?
4 дек 15, 17:06    [18515124]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8494
Очень лысый,

надо не тупо, а с учетом кодировки.
4 дек 15, 17:10    [18515155]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Очень лысый, вот вам пример:

SELECT HASHBYTES('SHA1', Part1 + Part2 + Part3), Part1 + Part2 + Part3
FROM (values (cast(N'Part1' as nvarchar(max)), cast(N'Part2' as nvarchar(max)), (cast(N'Part3' as nvarchar(max))))) as t (part1, part2, part3)
union all
select HASHBYTES('SHA1', 'Part1Part2Part3') , 'Part1Part2Part3'
4 дек 15, 17:10    [18515156]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 591
Minamoto
Очень лысый, вопрос для размышления: какого типа у вас поля Part1, Part2, Part3 и какого типа скопированная из студии строка?


Спасибо! Было подозрение на типы, но недожал. В селекте из таблицы был NVARCHAR а скопированная трактуется как VARCHAR.
4 дек 15, 17:12    [18515168]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21055
Лучше так:
SELECT HASHBYTES('SHA1', CONCAT(Part1, Part2, Part3)), CONCAT('"', Part1, Part2, Part3, '"') FROM table1
4 дек 15, 17:14    [18515185]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21055
Упс... увлёкся. Отменить.
4 дек 15, 17:15    [18515194]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить