本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
雜音
該 MURMUR3_32_HASH 函數計算所有常見的數據類型,包括數字和字符串類型的 32 位 Murmur3a 非加密散列。
語法
MURMUR3_32_HASH(value [, seed])
引數
- 值
-
輸入值散列。 AWS Clean Rooms散列輸入值的二進制表示。此行為類似於 FNV_HASH,但該值會轉換為 Apache 冰山 32 位元
雜湊規範所指定的二進位表示法。 - seed
-
雜湊函數的 INT 種子。此為選用引數。如果未指定,則AWS Clean Rooms使用預設種子 0。這會允許組合多個欄位的雜湊,而無須進行轉換或串連。
傳回類型
該函數返回一個 INT。
範例
下列範例會傳回數字的 Murmur3 雜湊值、字串 'AWS Clean Rooms',以及兩者的串連。
select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- -5968735742475085980 (1 row)
select MURMUR3_32_HASH('AWS Clean Rooms'); MURMUR3_32_HASH ---------------------- 7783490368944507294 (1 row)
select MURMUR3_32_HASH('AWS Clean Rooms', MURMUR3_32_HASH(1)); MURMUR3_32_HASH ---------------------- -2202602717770968555 (1 row)
使用須知
要計算具有多列的表的哈希值,可以計算第一列的 Murmur3 哈希值,並將其作為種子傳遞給第二列的散列。然後,它將第二列的 Murmur3 哈希作為種子傳遞給第三列的散列。
以下範例會建立種子來雜湊包含多個欄位的資料表。
select MURMUR3_32_HASH(column_3, MURMUR3_32_HASH(column_2, MURMUR3_32_HASH(column_1))) from sample_table;
相同屬性可以用來運算字串串連的雜湊。
select MURMUR3_32_HASH('abcd'); MURMUR3_32_HASH --------------------- -281581062704388899 (1 row)
select MURMUR3_32_HASH('cd', MURMUR3_32_HASH('ab')); MURMUR3_32_HASH --------------------- -281581062704388899 (1 row)
雜湊函數會使用輸入的類型來判斷要雜湊的位元組數。如有必要,其會使用轉換來強制使用特定類型。
下列範例使用不同的輸入類型來產生不同的結果。
select MURMUR3_32_HASH(1::smallint); MURMUR3_32_HASH -------------------- 589727492704079044 (1 row)
select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- -5968735742475085980 (1 row)
select MURMUR3_32_HASH(1::bigint); MURMUR3_32_HASH ---------------------- -8517097267634966620 (1 row)