FNV_ HASH fungsi - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

FNV_ HASH fungsi

Menghitung fungsi hash non-kriptografi 64-bit FNV -1a untuk semua tipe data dasar.

Sintaks

FNV_HASH(value [, seed])

Argumen

nilai

Nilai input yang akan di-hash. Amazon Redshift menggunakan representasi biner dari nilai untuk hash nilai input; misalnya, nilai di-hash menggunakan 4 byte dan INTEGER BIGINT nilai di-hash menggunakan 8 byte. Selain itu, hashing CHAR dan VARCHAR input tidak mengabaikan spasi tambahan.

benih

BIGINTBenih dari fungsi hash adalah opsional. Jika tidak diberikan, Amazon Redshift menggunakan seed defaultFNV. Ini memungkinkan menggabungkan hash dari beberapa kolom tanpa konversi atau penggabungan apa pun.

Jenis pengembalian

BIGINT

Contoh

Contoh berikut mengembalikan FNV hash angka, string 'Amazon Redshift', dan rangkaian keduanya.

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)

Catatan penggunaan

  • Untuk menghitung hash tabel dengan beberapa kolom, Anda dapat menghitung FNV hash dari kolom pertama dan meneruskannya sebagai benih ke hash kolom kedua. Kemudian, ia melewati FNV hash dari kolom kedua sebagai benih ke hash kolom ketiga.

    Contoh berikut menciptakan benih untuk hash tabel dengan beberapa kolom.

    select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
  • Properti yang sama dapat digunakan untuk menghitung hash dari rangkaian string.

    select fnv_hash('abcd'); fnv_hash --------------------- -281581062704388899 (1 row)
    select fnv_hash('cd', fnv_hash('ab')); fnv_hash --------------------- -281581062704388899 (1 row)
  • Fungsi hash menggunakan jenis input untuk menentukan jumlah byte untuk hash. Gunakan casting untuk menegakkan jenis tertentu, jika perlu.

    Contoh berikut menggunakan berbagai jenis input untuk menghasilkan hasil yang berbeda.

    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)