2010-09-11 15 views
0

Dans mon application, j'enregistrer le contenu des urls dans une table de base de données spécifique. Pour avoir une duplication minimum, je veux calculer la somme de contrôle pour chaque contenu. Alors, quel est le meilleur type de données sqlserver pour l'enregistrement des checksum? et le moyen le plus rapide de calculer les checksum pour le contenu (html) des urls?Le moyen le plus rapide pour calculer Checksum et Better Sql Server type de données pour enregistrer cela

Répondre

2

SHA1 pourrait être utilisé pour calculer la somme de contrôle. Le résultat est un tableau d'octets qui pourrait être stocké sous forme de chaîne hexadécimale ou de champ blob dans SQL, mais je pense que pour des raisons pratiques, une chaîne serait plus pratique.

2

vous pouvez utiliser une fonction intégrée dans le serveur SQL pour calculer l'un de ces (MD2, MD4, MD5, SHA ou SHA1)

exemples

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

qui retourne le varbinary type de données 0xC50252F4F24784B5D368926DF781EDE9

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

qui retourne une C50252F4F24784B5D368926DF781EDE9 varchar

Maintenant, tout ce que vous devez faire est de choisir si vous voulez ou varchar varbinary et l'utiliser pour votre colonne

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

+0

OK, cela est une bonne approche. mais il y a une limitation (la longueur maximale de l'entrée est de 8000 octets) – Sadegh