SELECT BINARY_CHECKSUM('Clifton House, Thornaby Place, Teesdale South, Stockton-On-Tees, Cleveland, TS17 6SD')
SELECT BINARY_CHECKSUM('Clifton House, Teesdale South, Thornaby Place, Stockton-On-Tees, Cleveland, TS17 6SD')
SELECT BINARY_CHECKSUM('Glenfield Hospital, Groby Road, , Leicester, Leicestershire, LE3 9DZ')
SELECT BINARY_CHECKSUM('Glenfield Hospital, Groby Road, , Leicester, Leicestershire, LE3 9EJ')
Взгляните на вышеизложенное. 2 пары адресов будут генерировать одно и то же значение контрольной суммы, даже если в тексте есть различия. Я понимаю, что, хотя вы не можете гарантировать, что CHECKSUM и BINARY_CHECKSUM будут отличаться для любого случайного контента, что они должны быть хороши для определения относительно небольших изменений в данной строке.
Интересно, что эти пары значений демонстрируют совершенно противоположное. Они генерируют равные контрольные суммы для очень близких значений данных. На самом деле это единственные повторяющиеся значения контрольной суммы в довольно большой таблице адресов (680 000 записей).
Я немного обеспокоен тем, что неправильно понял значение контрольной суммы при создании UPDATE? Должен ли я прибегать к полем грубой силы путем сопоставления полей, чтобы быть абсолютно уверенным в сборе изменения в строке данных?
Исходные данные для этих примеров были в 6 отдельных столбцах. Для ясности я уменьшил образец кода до минимального состояния.