Предположим, у меня есть таблица базы данных со следующими столбцами:
ProteinSequence
id (Integer)
AASequence (nvarchar(max))
Также предположим, что в этой таблице есть только одна запись
, где AASequence = «PLEINEQMMDLHSSLRTWCYFCYNAALHVPGNLTTQLMAKAMEPNAINIHCSEPTDYQQQGRSAASEWGLGIWQIVNLCHMCLGLYACVKTGSFNGCDGGGFQGIWCCWGSFTDYSLDDALGEKWCKEMRPYAHQINDVLIDMPLEFQHDSSIQWPQKACDNNQSTMTFWLAEKIFTFFQGLKQMDSTFQDNCPHATQNQKAMQVRAGSRATEAYCINTSDFMCLSKKWMAACKTKIVDGFQFSQFCWSNMDWATVYICANLTNWFYTGATSSKLVDQVWRESIVGQMFTHLYCPNVCIVPEYCEEMCFNRSQAQCMSADMCSLRSKQCTTELFCYICAGFLGGNVAWNGQRWWETDMYIEYWLIWTLQWHCNKHMHGCSTESRMHEYDDQQILELKNIHVWPFPGYEEYYTECRPEEMTVMQHTASMGSEAHNDLKNAWILDGSDMIADIWEVNICESQPQWWVNEWGKYLCSHKHDGLIDE»
1011 * Когда я выполнить следующий запрос на нем:
SELECT TOP 1
AASequence,
LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', AASequence), 2)) AS noconvertvarcharmd5,
LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(VARCHAR, UPPER(AASequence))), 2)) AS uppermd5,
FROM
[EOI].[dbo].[ProteinSequence]
WHERE
AASequence = 'PLEINEQMMDLHSSLRTWCYFCYNAALHVPGNLTTQLMAKAMEPNAINIHCSEPTDYQQQGRSAASEWGLGIWQIVNLCHMCLGLYACVKTGSFNGCDGGGFQGIWCCWGSFTDYSLDDALGEKWCKEMRPYAHQINDVLIDMPLEFQHDSSIQWPQKACDNNQSTMTFWLAEKIFTFFQGLKQMDSTFQDNCPHATQNQKAMQVRAGSRATEAYCINTSDFMCLSKKWMAACKTKIVDGFQFSQFCWSNMDWATVYICANLTNWFYTGATSSKLVDQVWRESIVGQMFTHLYCPNVCIVPEYCEEMCFNRSQAQCMSADMCSLRSKQCTTELFCYICAGFLGGNVAWNGQRWWETDMYIEYWLIWTLQWHCNKHMHGCSTESRMHEYDDQQILELKNIHVWPFPGYEEYYTECRPEEMTVMQHTASMGSEAHNDLKNAWILDGSDMIADIWEVNICESQPQWWVNEWGKYLCSHKHDGLIDE';
Я получаю различные хэш кодировки в SQL Server 2017 в зависимости от преобразования ли я последовательность ввода илине.Вот результаты
Без преобразования: 76efbe0427aa717507930168758c664d
С преобразованием: 85b592208da2d9a2415420009fe56ceb
Я также обнаружил, что это несоответствие также не наблюдается на очень коротких строках, таких как "ATC"*
Может ли кто-нибудь помочь мне понять, почему это происходит?
Контекст: это поведение было выявлено в ходе проверок кода при поиске причин, по которым у нас были повторяющиеся записи в базе данных.Примечание: мы использовали контрольные суммы MD5 для определения уникальности цепочки букв.