Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
FNV_ funzione HASH
Calcola la funzione hash non crittografica FNV -1a a 64 bit per tutti i tipi di dati di base.
Sintassi
FNV_HASH(value [, seed])
Argomenti
- value
-
Il valore di input da sottoporre a hash. Amazon Redshift utilizza la rappresentazione binaria del valore per eseguire l'hash del valore di input; ad esempio, INTEGER i valori vengono sottoposti a hash utilizzando 4 byte e BIGINT i valori vengono sottoposti a hash utilizzando 8 byte. Inoltre, l'hashing e gli input non ignorano gli spazi CHAR finaliVARCHAR.
- seed
-
Il BIGINT seme della funzione hash è facoltativo. Se non viene fornito, Amazon Redshift utilizza il seed predefinitoFNV. Ciò consente di combinare l'hash di più colonne senza conversioni o concatenazioni.
Tipo restituito
BIGINT
Esempio
I seguenti esempi restituiscono l'FNVhash di un numero, la stringa 'Amazon Redshift' e la concatenazione dei due.
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)
Note per l'utilizzo
Per calcolare l'hash di una tabella con più colonne, puoi calcolare l'hash della prima colonna e passarlo come seme all'FNVhash della seconda colonna. Quindi, passa l'FNVhash della seconda colonna come seme all'hash della terza colonna.
L'esempio seguente crea i seed per sottoporre all'hash una tabella con più colonne.
select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
La stessa proprietà può essere utilizzata per calcolare l'hash di una concatenazione di stringhe.
select fnv_hash('abcd'); fnv_hash --------------------- -281581062704388899 (1 row)
select fnv_hash('cd', fnv_hash('ab')); fnv_hash --------------------- -281581062704388899 (1 row)
La funzione hash utilizza il tipo di input per determinare il numero di byte da sottoporre all'hash. Utilizzare il casting per applicare un tipo specifico, se necessario.
Negli esempi seguenti vengono utilizzati diversi tipi di input per produrre risultati diversi.
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)