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

Откуда:
Сообщений: 22
Здравствуйте, товарищи.

Суть проблемы:
В базе существуют, предположим, следующие записи:
ПервичныйКлючТипЗаявкиДополнениеКод1Код2Код3Код4Код5Код6Значение1Значение2Значение3Значение4Значение5Значение6
1700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
2700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
3700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
4700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
5700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
6700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
7700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
8700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
9700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
10700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000
11700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000


Над данным множеством выполняю:
select *, 
HASHBYTES ('SHA1',
  ТипЗаявки
+ Дополнение
+ CAST(Код1 AS VARCHAR(10))
+ CAST(Код2 AS VARCHAR(10))
+ CAST(Код3 AS VARCHAR(10))
+ CAST(Код4 AS VARCHAR(10))
+ CAST(Код5 AS VARCHAR(10))
+ CAST(Код6 AS VARCHAR(10))
+ CONVERT(varchar(18),Значение1, 1)
+ CONVERT(varchar(18),Значение2, 1)
+ CONVERT(varchar(18),Значение3, 1)
+ CONVERT(varchar(18),Значение4, 1)
+ CONVERT(varchar(18),Значение5, 1)
+ CONVERT(varchar(18),Значение6, 1)
)
from #MyTable


И получаю:
ТипЗаявкиДополнениеКод1Код2Код3Код4Код5Код6Значение1Значение2Значение3Значение4Значение5Значение6ХЭШ
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x944F116B2C5036088105AAB5DA3C37339ED5D784
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x944F116B2C5036088105AAB5DA3C37339ED5D784
700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x80000000000000000x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98


Как видно, данные, по которым вычисляется хэш - одинаковые. Почему у двух записей из массива хэш не совпадает с остальными? кто подскажет?

MSSQL 2008R2
24 май 18, 05:40    [21434613]     Ответить | Цитировать Сообщить модератору
 Re: HASHBYTES втирает мне какоую-то дичЪ!  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5631
Найдите 10 отличий:
select hashbytes('SHA1',
'700211400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000'
)
union all
select hashbytes('SHA1',
'7002 11400000x80020000000007A10x80020000000048850x80000000000000000x80000000000000000x80000000000000000x8000000000000000'
)


-------------------------------------------------
0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98
0x944F116B2C5036088105AAB5DA3C37339ED5D784

(2 row(s) affected)
24 май 18, 06:21    [21434623]     Ответить | Цитировать Сообщить модератору
 Re: HASHBYTES втирает мне какоую-то дичЪ!  [new]
Oomel
Member

Откуда:
Сообщений: 22
Сон Веры Павловны,

Хех, только начал писать ответ, что обнаружил проблему. Вы опередили.
Благодарю за ответ.
24 май 18, 06:31    [21434627]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить