2010-09-11 2 views
0

В моем приложении я сохраняю содержимое URL-адресов в конкретной таблице базы данных. чтобы иметь минимальное дублирование, я хочу вычислить контрольную сумму для каждого контента. так что лучший тип данных sqlserver для сохранения контрольной суммы? и самый быстрый способ вычисления контрольной суммы для содержимого (html) URL-адресов?Самый быстрый способ вычисления контрольной суммы и лучшего Sql-файла данных сервера для сохранения этого

ответ

2

SHA1 может использоваться для расчета контрольной суммы. Результатом является массив байтов, который может быть сохранен либо как шестнадцатеричная строка, либо поле blob в SQL, но по практическим соображениям я думаю, что строка будет более удобной.

2

вы можете использовать встроенную функцию в SQL сервере для вычисления любого из них (MD2, MD4, MD5, SHA или SHA1)

примеры

SELECT HashBytes('MD5', 'http://www.cnn.com') 

, которая возвращает VARBINARY тип данных 0xC50252F4F24784B5D368926DF781EDE9

SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'http://www.cnn.com'),2) 

, который возвращает VARCHAR C50252F4F24784B5D368926DF781EDE9

Теперь все, что вам нужно сделать, это собирание, если вы хотите VARCHAR или VARBINARY и использовать это для вашей колонки

См Generating a MD2, MD4, MD5, SHA, or SHA1 hash by using HashBytes

+0

ОК, это хороший подход. но существует ограничение (максимальная длина ввода составляет 8000 байт) – Sadegh