sql >> Databasteknik >  >> RDS >> Sqlserver

Varför checksum() returnerar samma värde för olika strängar

SQL CHECKSUM() och MD5 är Hash-funktioner . Hashing är en enkelriktad algoritm som kan ta valfritt antal tecken/byte och returnera ett fast antal tecken/byte.

Det betyder att oavsett om din inmatning är ett tecken eller en hel bok (Krig och fred) kommer du att få tillbaka samma längd på svar. Så ingången är oändligt antal kombinationer medan utmatningen är ändlig. Baserat på det är det oundvikligt att få samma Hash för olika värden. Det kallas Hashkollision . Bra Hash-algoritmer försöker mildra detta för att göra det svårt att hitta dessa kolliderande värden.

Men nog med teori om hash. Här är exakt svaret på din fråga. Vad är problem med CHECKSUM() ?



  1. SQL-utvecklare:generera DB-dokument för andra användare

  2. Optimera en enkel mysql-val på ett stort bord (75 miljoner+ rader)

  3. Hur man genererar ett slumpmässigt heltal inom ett intervall i MariaDB

  4. [Laravel]:SQLSTATE[3F000]:Ogiltigt schemanamn