Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Berechnet die nicht-kryptographische 64-Bit-Hash-Funktion FNV-1a für alle grundlegenden Datentypen.
Syntax
FNV_HASH(value [, seed])
Argumente
- Wert
-
Der Eingabewert, der gehasht werden soll. Amazon Redshift verwendet die binäre Darstellung des Wertes, um den Eingabewert zu hashen. Beispielsweise werden INTEGER-Werte mit 4 Bytes gehasht und BIGINT-Werte mit 8 Bytes. Außerdem werden beim Hashing von CHAR- und VARCHAR-Eingaben keine nachstehenden Leerzeichen ignoriert.
- Seed
-
Der BIGINT-Seed der Hash-Funktion ist optional. Wenn er nicht angegeben wird, verwendet Amazon Redshift den Standard-FNV-Seed. Dies ermöglicht eine Kombination des Hashs mehrerer Spalten ohne Konvertierungen oder Verkettungen.
Rückgabetyp
BIGINT
Beispiel
Die folgenden Beispiele geben den FNV-Hash einer Zahl, der Zeichenfolge „Amazon Redshift“ und die Verkettung beider zurück.
select fnv_hash(1);
fnv_hash
----------------------
-5968735742475085980
(1 row)
select fnv_hash('Amazon Redshift');
fnv_hash
---------------------
7783490368944507294
(1 row)
select fnv_hash('Amazon Redshift', fnv_hash(1));
fnv_hash
----------------------
-2202602717770968555
(1 row)
Nutzungshinweise
Um den Hash einer Tabelle mit mehreren Spalten zu berechnen, können Sie den FNV-Hash der ersten Spalte berechnen und ihn als Seed an den Hash der zweiten Spalte übergeben. Dann wird der FNV-Hash der zweiten Spalte als Seed an den Hash der dritten Spalte übergeben.
Im folgenden Beispiel werden Seeds erstellt, um eine Tabelle mit mehreren Spalten zu hashen.
select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
Mit derselben Eigenschaft kann der Hash einer Verkettung von Zeichenfolgen berechnet werden.
select fnv_hash('abcd'); fnv_hash --------------------- -281581062704388899 (1 row)
select fnv_hash('cd', fnv_hash('ab')); fnv_hash --------------------- -281581062704388899 (1 row)
Die Hash-Funktion verwendet den Typ der Eingabe, um die Anzahl der zu hashenden Bytes zu bestimmen. Verwenden Sie Übertragen, um einen bestimmten Typ zu erzwingen, falls erforderlich.
In den folgenden Beispielen werden verschiedene Eingabetypen verwendet, um unterschiedliche Ergebnisse zu erzielen.
select fnv_hash(1::smallint); fnv_hash -------------------- 589727492704079044 (1 row)
select fnv_hash(1); fnv_hash ---------------------- -5968735742475085980 (1 row)
select fnv_hash(1::bigint); fnv_hash ---------------------- -8517097267634966620 (1 row)