HASH()
DSQL, PSQL
INTEGER,BIGINT
HASH (value [USING <hash>]) <hash> ::= CRC32
| Parameter | Beschreibung |
|---|---|
value |
Ausdruck von Werten jeglicher Art;Nicht-String- oder Nicht-Binär-Typen werden in Strings konvertiert |
hash |
Anzuwendender nicht-kryptografischer Hash-Algorithmus |
HASH gibt einen Hash-Wert für das Eingabeargument zurück.Wenn das Eingabeargument kein String- oder Binärtyp ist, wird es vor dem Hashing in einen String konvertiert.
Die optionale USING-Klausel gibt den anzuwendenden nicht-kryptografischen Hash-Algorithmus an.Wenn die USING-Klausel fehlt, wird der Legacy-PJW-Algorithmus angewendet;dies ist identisch mit dem Verhalten in früheren Firebird-Versionen.
Diese Funktion unterstützt vollständig Text-BLOBs jeder Länge und jedes beliebigen Zeichensatzes.
- not specified
-
Wenn kein Algorithmus angegeben ist, wendet Firebird die 64-Bit-Variante der nicht-kryptografischen PJW-Hash-Funktion (auch bekannt als ELF64) an.Dies ist ein sehr schneller Algorithmus für allgemeine Zwecke (Hash-Tabellen usw.), aber seine Kollisionsqualität ist nicht optimal.Andere Hashfunktionen – die explizit in der
USING-Klausel angegeben sind, oder kryptografische Hashes durch [fblangref40-scalarfuncs-crypthash-de] – sollten für zuverlässigeres Hashing verwendet werden.Die Funktion
HASHgibtBIGINTfür diesen Algorithmus zurück CRC32-
Mit
CRC32wendet Firebird den CRC32-Algorithmus unter Verwendung des Polynoms 0x04C11DB7 an.Die Funktion
HASHgibtINTEGERfür diesen Algorithmus zurück.