Здравствуйте, товарищи.
Суть проблемы: В базе существуют, предположим, следующие записи:
ПервичныйКлюч | ТипЗаявки | Дополнение | Код1 | Код2 | Код3 | Код4 | Код5 | Код6 | Значение1 | Значение2 | Значение3 | Значение4 | Значение5 | Значение6 | 1 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 2 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 3 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 4 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 5 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 6 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 7 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 8 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 9 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 10 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 11 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 |
|
Над данным множеством выполняю:
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 | ХЭШ | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x944F116B2C5036088105AAB5DA3C37339ED5D784 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x944F116B2C5036088105AAB5DA3C37339ED5D784 | 7002 | | 1 | 14 | 0 | 0 | 0 | 0 | 0x80020000000007A1 | 0x8002000000004885 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x8000000000000000 | 0x16920CFE2BFCC1DFFC72D45B8348A289F9D09D98 |
|
Как видно, данные, по которым вычисляется хэш - одинаковые. Почему у двух записей из массива хэш не совпадает с остальными? кто подскажет?
MSSQL 2008R2
|