メインコンテンツまでスキップ
に最終更新

MURMUR_HASH3_64_V2

説明​

符号付き 64 ビットの MurmurHash3 ハッシュ値を計算します。符号なしの値については murmur_hash3_u64_v2 を参照してください。

MURMUR_HASH3_64 と異なり、MurmurHash3 の 128 ビット処理関数を再利用して最初の 64 ビットのハッシュ値だけを出力します。この結果は標準ライブラリの実装と一致します。

注: テストによると、xxhash_64 の性能は murmur_hash3_64 の約 2 倍です。そのため、ハッシュ値の計算には xxhash_64 を murmur_hash3_64 の代わりに使用することを推奨します。

構文​

MURMUR_HASH3_64_V2( <str> [ , <str> ... ] )

パラメータ​

パラメータ説明
<str>64 ビットの MurmurHash3 ハッシュ値を計算する対象の値

戻り値​

入力文字列の 64 ビット MurmurHash3 ハッシュ値を返します。

いずれかの引数が NULL の場合は NULL を返します。

使用例​

select murmur_hash3_64_v2(null), murmur_hash3_64_v2("hello"), murmur_hash3_64_v2("hello", "world");
+--------------------------+-----------------------------+--------------------------------------+
| murmur_hash3_64_v2(null) | murmur_hash3_64_v2("hello") | murmur_hash3_64_v2("hello", "world") |
+--------------------------+-----------------------------+--------------------------------------+
| NULL | -3758069500696749310 | -662943091231200135 |
+--------------------------+-----------------------------+--------------------------------------+
-- The function outputs a signed 64-bit integer.
SELECT
mmhash3_64_v2,
mmhash3_u64_v2,
i64_to_ui64 = mmhash3_u64_v2 AS is_equal
FROM (
SELECT
murmur_hash3_64_v2('1013199993_1756808272') AS mmhash3_64_v2,
murmur_hash3_u64_v2('1013199993_1756808272') AS mmhash3_u64_v2,
CAST(murmur_hash3_64_v2('1013199993_1756808272') AS LARGEINT) & 18446744073709551615 AS i64_to_ui64
) t;
+----------------------+----------------------+----------+
| mmhash3_64_v2 | mmhash3_u64_v2 | is_equal |
+----------------------+----------------------+----------+
| -2648103510258542450 | 15798640563451009166 | 1 |
+----------------------+----------------------+----------+