FNV_ Funktion HASH - Amazon Redshift

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.

FNV_ Funktion HASH

Berechnet die nicht-kryptografische FNV 64-Bit-Hashfunktion -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 Werts, um den Eingabewert zu hashen. INTEGER Werte werden beispielsweise mit 4 Byte und BIGINT Werte mit 8 Byte gehasht. Außerdem werden beim Hashing CHAR und bei VARCHAR Eingaben nachfolgende Leerzeichen nicht ignoriert.

Seed

Der BIGINT Startwert der Hash-Funktion ist optional. Falls nicht angegeben, verwendet Amazon Redshift den FNV Standard-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, die Zeichenfolge 'Amazon Redshift' und die Verkettung der beiden 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 Ausgangswert an den Hash der zweiten Spalte übergeben. Dann übergibt es den FNV Hash der zweiten Spalte als Ausgangswert an den Hash der dritten Spalte.

    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)