У меня есть код со следующими строками:
CAST(HASHBYTES('MD5', 'some long string with up to 256 characters') AS int)
CAST(HASHBYTES('SHA2_256', 'some very very long string...') AS int)
Это было сделано для создания уникального значения int, а позже значение int используется в качестве ключа поиска (или внешнего ключа в соединении). Итак, мое лучшее предположение о том, почему это делается таким образом, - это ускорить соединение и иметь возможность генерировать индекс (и не упираться в ограничение в 900 байтов).
Но я не уверен, что приведенный выше вывод не создаст гораздо больше коллизий при преобразовании его в int.
Насколько я понимаю, невозможно представить хеш MD5 или даже хеш SHA-256 как значение int...
Первоначально код был разработан на SQL-Server 2008. В настоящее время я использую SQL-Server 2014.