Вижте следната публикация в блога, която подчертава разликите.
http://decipherinfosys.wordpress. com/2007/05/18/checksum-functions-in-sql-server-2005/
Добавяне на информация от тази връзка:
Основното предназначение на функциите CHECKSUM е да се изгради хеш индекс въз основа на израз или списък с колони. Ако кажем, че го използвате за изчисляване и съхраняване на колона на ниво таблица, за да обозначите контролната сума над колоните, които правят записа уникален в таблица, тогава това може да бъде полезно при определяне дали даден ред е променен или не. След това този механизъм може да се използва вместо обединяване с всички колони, които правят записа уникален, за да видите дали записът е актуализиран или не. SQL Server Books Online има много примери за тази част от функционалността.
Няколко неща, за които да внимавате, когато използвате тези функции:
Трябва да се уверите, че редът на колоните или изразите е еднакъв между двете контролни суми, които се сравняват, в противен случай стойността ще бъде различна и ще доведе до проблеми.
Не бихме препоръчали използването на контролна сума(*), тъй като стойността, която ще се генерира по този начин, ще се основава на реда на колоните на дефиницията на таблицата по време на изпълнение, което може лесно да се промени за определен период от време. Така че, изрично дефинирайте списъка с колони.
Бъдете внимателни, когато включвате колоните тип данни за дата и час, тъй като детайлността е 1/300 от секундата и дори малка вариация ще доведе до различна стойност на контролната сума. Така че, ако трябва да използвате колона тип данни за дата и час, тогава се уверете, че получавате точната дата + час/мин. т.е. нивото на детайлност, което желаете.
Налични са три функции за контролна сума:
КОНТРОЛНА СУМА:Това беше описано по-горе.
CHECKSUM_AGG:Това връща контролната сума на стойностите в група и нулевите стойности се игнорират в този случай. Това работи и с клаузата OVER на новата аналитична функция в SQL Server 2005.
BINARY_CHECKSUM:Както гласи името, това връща стойността на двоичната контролна сума, изчислена върху ред или списък с изрази. Разликата между CHECKSUM и BINARY_CHECKSUM е в стойността, генерирана за низовите типове данни. Пример за такава разлика е, че стойностите, генерирани за „DECIPHER“ и „decipher“, ще бъдат различни в случай на BINARY_CHECKSUM, но ще бъдат същите за функцията CHECKSUM (ако приемем, че имаме инсталация на екземпляра, която не е чувствителна към главни и малки букви). Друга разлика е в сравнението на изразите. BINARY_CHECKSUM() връща същата стойност, ако елементите на два израза имат един и същи тип и байтово представяне. И така, „2Volvo Director 20“ и „3Volvo Director 30“ ще дадат една и съща стойност, но функцията CHECKSUM() оценява типа, както и сравнява двата низа и ако са равни, тогава се връща само същата стойност.
Example:
STRING BINARY_CHECKSUM_USAGE CHECKSUM_USAGE
------------------- ---------------------- -----------
2Volvo Director 20 -1356512636 -341465450
3Volvo Director 30 -1356512636 -341453853
4Volvo Director 40 -1356512636 -341455363