Überprüfen Sie den folgenden Blog-Beitrag, der die Unterschiede hervorhebt.
http://decipherinfosys.wordpress.com/2007/05/18/checksum-functions-in-sql-server-2005/
Hinzufügen von Informationen aus diesem Link:
Der Hauptzweck der CHECKSUM-Funktionen besteht darin, einen Hash-Index basierend auf einem Ausdruck oder einer Spaltenliste zu erstellen. Wenn Sie es beispielsweise verwenden, um eine Spalte auf Tabellenebene zu berechnen und zu speichern, um den Prüfsummenwert über die Spalten zu bezeichnen, die einen Datensatz in einer Tabelle eindeutig machen, kann dies nützlich sein, um festzustellen, ob sich ein Datensatz geändert hat oder nicht. Dieser Mechanismus kann dann anstelle eines Joins mit allen Spalten, die den Datensatz eindeutig machen, verwendet werden, um festzustellen, ob der Datensatz aktualisiert wurde oder nicht. Das SQL Server Books Online enthält viele Beispiele für dieses Funktionsstück.
Ein paar Dinge, auf die Sie achten sollten, wenn Sie diese Funktionen verwenden:
Sie müssen sicherstellen, dass die Reihenfolge der Spalten oder Ausdrücke zwischen den beiden Prüfsummen gleich ist, die verglichen werden, sonst wäre der Wert unterschiedlich und würde zu Problemen führen.
Wir würden nicht empfehlen, checksum(*) zu verwenden, da der auf diese Weise generierte Wert auf der Spaltenreihenfolge der Tabellendefinition zur Laufzeit basiert, was sich im Laufe der Zeit leicht ändern kann. Definieren Sie also explizit die Spaltenliste.
Achten Sie darauf, wann Sie die Spalten vom Typ datetime einschließen, da die Granularität 1/300 Sekunde beträgt und selbst eine kleine Abweichung zu einem anderen Prüfsummenwert führt. Wenn Sie also eine Spalte vom Typ datetime verwenden müssen, stellen Sie sicher, dass Sie das genaue Datum + Stunde/Minute erhalten. d.h. die Granularitätsebene, die Sie möchten.
Ihnen stehen drei Prüfsummenfunktionen zur Verfügung:
CHECKSUM: Dies wurde oben beschrieben.
CHECKSUM_AGG: Dies gibt die Prüfsumme der Werte in einer Gruppe zurück und NULL-Werte werden in diesem Fall ignoriert. Dies funktioniert auch mit der neuen Analysefunktion OVER-Klausel in SQL Server 2005.
BINARY_CHECKSUM: Wie der Name schon sagt, gibt dies den binären Prüfsummenwert zurück, der über eine Zeile oder eine Reihe von Ausdrücken berechnet wird. Der Unterschied zwischen CHECKSUM und BINARY_CHECKSUM besteht im generierten Wert für die Zeichendatentypen. Ein Beispiel für einen solchen Unterschied sind die Werte, die für "DECIPHER" und "decipher" generiert werden. Im Fall einer BINARY_CHECKSUM sind sie unterschiedlich, während sie für die CHECKSUM-Funktion (unter der Annahme, dass wir eine Groß- und Kleinschreibung unempfindliche Installation der Instanz haben) gleich sind. Ein weiterer Unterschied liegt im Vergleich von Ausdrücken. BINARY_CHECKSUM() gibt denselben Wert zurück, wenn die Elemente zweier Ausdrücke denselben Typ und die gleiche Byte-Repräsentation haben. "2Volvo Director 20" und "3Volvo Director 30" ergeben daher den gleichen Wert, während die CHECKSUM() -Funktion den Typ auswertet und die beiden Zeichenfolgen vergleicht, und wenn sie gleich sind, wird nur der gleiche Wert zurückgegeben.
Beispiel:
STRING BINARY_CHECKSUM_USAGE CHECKSUM_USAGE
------------------- ---------------------- -----------
2Volvo Director 20 -1356512636 -341465450
3Volvo Director 30 -1356512636 -341453853
4Volvo Director 40 -1356512636 -341455363