FNV_ HASH fonction - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

FNV_ HASH fonction

Calcule la fonction de hachage non cryptographique FNV -1a sur 64 bits pour tous les types de données de base.

Syntaxe

FNV_HASH(value [, seed])

Arguments

valeur

Valeur d’entrée à hacher. Amazon Redshift utilise la représentation binaire de la valeur pour hacher la valeur d'entrée ; par exemple, les INTEGER valeurs sont hachées sur 4 octets et les BIGINT valeurs sont hachées sur 8 octets. De plus, le hachage CHAR et les VARCHAR entrées n'ignorent pas les espaces de fin.

Seed (Noyau)

Le code BIGINT source de la fonction de hachage est facultatif. Si ce n'est pas le cas, Amazon Redshift utilise la valeur de départ par défautFNV. Cela permet de combiner le hachage de plusieurs colonnes sans conversions ni concaténations.

Type de retour

BIGINT

Exemple

Les exemples suivants renvoient le FNV hachage d'un nombre, la chaîne « Amazon Redshift » et la concaténation des deux.

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)

Notes d’utilisation

  • Pour calculer le hachage d'une table comportant plusieurs colonnes, vous pouvez calculer le FNV hachage de la première colonne et le transmettre en tant que point de départ au hachage de la deuxième colonne. Ensuite, il transmet le FNV hachage de la deuxième colonne sous forme de graine au hachage de la troisième colonne.

    L’exemple suivant crée des noyaux pour hacher une table comportant plusieurs colonnes.

    select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
  • La même propriété peut être utilisée pour calculer le hachage d’une concaténation de chaînes.

    select fnv_hash('abcd'); fnv_hash --------------------- -281581062704388899 (1 row)
    select fnv_hash('cd', fnv_hash('ab')); fnv_hash --------------------- -281581062704388899 (1 row)
  • La fonction de hachage utilise le type de l’entrée pour déterminer le nombre d’octets à hacher. Utilisez la conversion de types pour appliquer un type spécifique, si nécessaire.

    Les exemples suivants utilisent différents types d’entrée pour produire des résultats différents.

    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)