哈希函数
哈希函数可用于对元素进行确定性的伪随机打乱。
Simhash 是一种哈希函数,对相近(相似)的参数会返回相近的哈希值。
大多数哈希函数可以接受任意数量、任意类型的参数。
NULL 的哈希值是 NULL。要获取 Nullable 列的非 NULL 哈希值,请将其包裹在一个元组中:
要计算整张表所有内容的哈希值,请使用 sum(cityHash64(tuple(*)))(或其他哈希函数)。tuple 可确保不会跳过包含 NULL 值的行,sum 则可确保行的顺序不影响结果。
BLAKE3
引入版本:v22.10
计算 BLAKE3 哈希字符串,并将得到的字节序列作为 FixedString 返回。 该密码学哈希函数借助 BLAKE3 Rust 库集成到 ClickHouse 中。 该函数速度相当快,相比 SHA-2 性能大约快两倍,同时生成的哈希长度与 SHA-256 相同。 它返回一个类型为 FixedString(32) 的字节数组形式的 BLAKE3 哈希值。
语法
参数
message— 要进行哈希计算的输入字符串。String
返回值
返回输入字符串的 32 字节 BLAKE3 哈希值,作为定长字符串返回。FixedString(32)
示例
hash
MD4
在 v21.11 中引入
计算给定字符串的 MD4 哈希值。
语法
参数
s— 要计算哈希值的输入字符串。String
返回值
返回给定输入字符串的 MD4 哈希值,类型为固定长度字符串。FixedString(16)
示例
使用示例
MD5
自 v1.1 起引入
计算给定字符串的 MD5 哈希值。
语法
参数
s— 要进行哈希运算的输入字符串。String
返回值
返回给定输入字符串的 MD5 哈希值,类型为定长字符串。FixedString(16)
示例
用法示例
RIPEMD160
自 v24.10 引入
计算给定字符串的 RIPEMD-160 哈希值。
语法
参数
s— 要进行哈希计算的输入字符串。String
返回值
返回给定输入字符串的 RIPEMD160 哈希值,作为定长字符串。FixedString(20)
示例
使用示例
SHA1
自 v1.1 起引入
计算给定字符串的 SHA1 哈希值。
语法
参数
s— 要进行哈希的输入字符串String
返回值
返回给定输入字符串的 SHA1 哈希值,作为长度为 20 的定长字符串类型返回。FixedString(20)
示例
使用示例
SHA224
在 v1.1 中引入
计算给定字符串的 SHA224 哈希。
语法
参数
s— 要进行哈希的输入值。String
返回值
返回给定输入字符串的 SHA224 哈希值,类型为定长字符串。FixedString(28)
示例
使用示例
SHA256
自 v1.1 起引入。
计算给定字符串的 SHA256 哈希值。
语法
参数
s— 要进行哈希的输入字符串。String
返回值
返回给定输入字符串的 SHA256 哈希值,类型为固定长度字符串。FixedString(32)
示例
使用示例
SHA384
引入版本:v1.1
计算给定字符串的 SHA384 哈希值。
语法
参数
s— 输入用于计算哈希值的字符串。String
返回值
返回给定输入字符串的 SHA384 哈希值,作为固定长度字符串。FixedString(48)
示例
使用示例
SHA512
在 v1.1 中引入
计算给定字符串的 SHA512 哈希值。
语法
参数
s— 要进行哈希计算的输入字符串String
返回值
返回给定输入字符串的 SHA512 哈希值,类型为定长字符串 FixedString(64)
示例
用法示例
SHA512_256
自 v1.1 起提供
计算给定字符串的 SHA512_256 哈希值。
语法
参数
s— 要进行哈希运算的输入字符串。String
返回值
返回给定输入字符串的 SHA512_256 哈希值,类型为固定长度字符串。FixedString(32)
示例
用法示例
URLHash
引入版本:v1.1
一种针对从 URL 获取并经过某种规范化处理后的字符串的快速、较高质量的非加密哈希函数。
此哈希函数有两种模式:
| Mode | Description |
|---|---|
URLHash(url) | 从字符串中计算哈希值;如果末尾存在 /、? 或 # 之一作为结尾符号,则先移除该符号后再进行计算。 |
URLHash(url, N) | 从字符串中计算哈希值,计算范围限定为 URL 层级结构中的第 N 层;如果末尾存在 /、? 或 # 之一作为结尾符号,则先移除该符号后再进行计算。层级的定义与 URLHierarchy 中相同。 |
语法
参数
返回值
返回 url 的计算哈希值。UInt64
示例
用法示例
指定级别 URL 的哈希值
cityHash64
引入于:v1.1
生成 64 位的 CityHash 哈希值。
这是一个快速的非密码学哈希函数。 它对字符串参数使用 CityHash 算法,对其他数据类型的参数使用具体实现相关的快速非密码学哈希函数。 该函数使用 CityHash 组合器来得到最终结果。
在 CityHash 被集成到 ClickHouse 之后,Google 修改了 CityHash 的算法。 换句话说,ClickHouse 的 cityHash64 与 Google 上游的 CityHash 现在会产生不同的结果。 ClickHouse 的 cityHash64 对应 CityHash v1.0.2。
对于不同参数类型但输入值相同的情况,计算得到的哈希值可能相等。
例如,这会影响不同大小的整数类型、具有相同数据的具名和非具名 Tuple,以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量可变的输入参数,用于计算哈希值。Any
返回值
返回输入参数计算得到的哈希值。UInt64
示例
调用示例
计算整张表的校验和(精确到行顺序)
farmFingerprint64
引入于:v20.12
使用 Fingerprint64 方法生成 64 位的 FarmHash 值。
与 farmHash64 相比,farmFingerprint64 更适合用于获取稳定且可移植的值。
对于不同参数类型但相同输入值,计算得到的哈希值可能会相同。
这会影响到例如不同大小的整数类型、具有相同数据的已命名和未命名 Tuple,以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量可变的输入参数,用于计算哈希值。Any
返回值
返回输入参数计算得到的哈希值。UInt64
示例
使用示例
farmHash64
引入自:v1.1
使用 Hash64 方法生成 64 位的 FarmHash 哈希值。
为了获得稳定且可移植的值,推荐使用 farmFingerprint64。
对于不同参数类型但具有相同输入值的情况,计算出的哈希值可能相同。
例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 Tuple,以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量可变的一组输入参数,用于计算哈希值。Any
返回值
返回根据输入参数计算得到的哈希值。UInt64
示例
用法示例
gccMurmurHash
引入版本:v20.1
使用与 GCC 相同的种子,计算输入值的 64 位 MurmurHash2 哈希值。
在 Clang 和 GCC 的构建之间具有可移植性。
语法
参数
arg1[, arg2, ...]— 用于计算哈希值的数量可变参数。Any
返回值
返回根据输入参数计算得到的哈希值。UInt64
示例
用法示例
halfMD5
引入于:v1.1
将所有输入参数都重新解释为字符串,并为每个参数计算其 MD5 哈希值。然后将这些哈希组合在一起,对所得字符串再计算哈希值,取其前 8 个字节,并按大端字节序将其解释为 UInt64。该函数相对较慢(每个处理器核心每秒处理 500 万个短字符串)。
建议改用 sipHash64 函数。
该函数接受可变数量的输入参数。 参数可以是任意受支持的数据类型。 对于某些数据类型,即使参数类型不同(例如不同大小的整数、具有相同数据的具名和匿名 Tuple、以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型),只要取值相同,计算得到的哈希值也可能相同。
语法
参数
arg1[, arg2, ..., argN]— 要计算哈希的可变数量的参数。Any
返回值
返回给定输入参数计算得到的半长 MD5 哈希值,并以大端字节序的 UInt64 值返回。UInt64
示例
用法示例
hiveHash
引入自:v20.1
计算字符串的 “HiveHash” 值。
它只是将 JavaHash 的符号位清零后的结果。
此函数用于 3.0 之前版本的 Apache Hive。
该哈希函数性能较差。 仅在该算法已在其他系统中使用且需要计算相同结果时才使用它。
语法
参数
arg— 要进行哈希计算的输入字符串。String
返回值
返回输入字符串计算得到的 Hive 哈希值(“hive hash”)。Int32
示例
用法示例
icebergHash
在 v25.5 中引入
实现 Iceberg hashing transform 逻辑
语法
参数
返回值
返回一个 32 位 Murmur3 哈希值(x86 变体,种子为 0),类型为 Int32
示例
示例
intHash32
自 v1.1 引入
计算 32 位整数的哈希值。
该哈希函数速度较快,但不是密码学散列函数。
语法
参数
arg— 要进行哈希的整数。(U)Int*
返回值
返回输入整数计算出的 32 位哈希值 UInt32
示例
使用示例
intHash64
引入版本:v1.1
计算整数的 64 位哈希值。
该哈希函数相对较快(甚至比 intHash32 更快),但不是密码学意义上的哈希函数。
语法
参数
int— 要进行哈希的整数。(U)Int*
返回值
64 位哈希值。UInt64
示例
用法示例
javaHash
在 v20.1 中引入
从以下类型计算 JavaHash:
该哈希函数性能较低。 仅在该算法已在其他系统中使用且需要计算相同结果时才使用它。
Java 仅支持计算有符号整数的哈希值, 因此如果需要计算无符号整数的哈希值,必须先将它们转换(cast)为相应的有符号 ClickHouse 类型。
语法
参数
arg— 要进行哈希运算的输入值。Any
返回值
返回 arg 的哈希值 Int32
示例
用法示例 1
使用示例 2
javaHashUTF16LE
引入版本:v20.1
从字符串计算其 JavaHash,假定该字符串的字节内容表示为 UTF-16LE 编码的字符串。
语法
参数
arg— 使用 UTF-16LE 编码的字符串。String
返回值
返回 UTF-16LE 编码字符串计算得到的哈希值。Int32
示例
使用示例
jumpConsistentHash
自 v1.1 起引入
计算整数的 jump consistent hash。
语法
参数
返回值
返回计算得到的哈希值。Int32
示例
使用示例
kafkaMurmurHash
引入于:v23.4
使用与 Kafka 相同的种子计算输入值的 32 位 MurmurHash2 哈希值,并清除最高位,以便与 Default Partitioner 兼容。
语法
参数
arg1[, arg2, ...]— 要计算哈希值的一组参数,参数个数可变。Any
返回值
返回对输入参数计算得到的哈希值。UInt32
示例
用法示例
keccak256
引入版本:v25.4
计算给定字符串的 Keccak-256 密码学哈希值。 此哈希函数在区块链应用中被广泛使用,尤其是在以太坊(Ethereum)中。
语法
参数
message— 要进行哈希计算的输入字符串。String
返回值
返回输入字符串的 32 字节 Keccak-256 哈希值,作为定长字符串。FixedString(32)
示例
用法示例
kostikConsistentHash
引入版本:v22.6
由 Konstantin 'Kostik' Oblakov 提出的时间和空间复杂度均为 O(1) 的一致性哈希算法。
仅当 n <= 32768 时效率较高。
语法
别名: yandexConsistentHash
参数
返回值
返回计算得到的哈希值。UInt16
示例
用法示例
metroHash64
引入版本:v1.1
生成一个 64 位的 MetroHash 哈希值。
当参数类型不同但输入值相同时,计算出的哈希值可能相同。
例如,这种情况会出现在不同大小的整数类型、具有相同数据的命名和未命名 Tuple、以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型中。
语法
参数
arg1[, arg2, ...]— 若干个用于计算哈希的输入参数。Any
返回值
返回对输入参数计算得到的哈希值。UInt64
示例
使用示例
murmurHash2_32
引入于:v18.5
计算输入值的 MurmurHash2 哈希值。
对于不同参数类型的相同输入值,计算得到的哈希值可能相同。
例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 Tuple,以及具有相同数据的 Map 和对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 若干个用于计算哈希的输入参数,数量可变。Any
返回值
返回对输入参数计算得到的哈希值。UInt32
示例
使用示例
murmurHash2_64
引入自:v18.10
计算输入值的 MurmurHash2 哈希值。
对于不同参数类型但具有相同输入值的情况,计算得到的哈希值可能相同。
例如,这会影响到不同大小的整数类型、包含相同数据的命名和未命名 Tuple,以及包含相同数据的 Map 和其对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量可变的输入参数,用于计算哈希值。Any
返回值
返回根据输入参数计算得到的哈希值。UInt64
示例
用法示例
murmurHash3_128
自 v18.10 引入
计算输入值的 128 位 MurmurHash3 哈希值。
语法
参数
arg1[, arg2, ...]— 用于计算哈希值的可变数量输入参数。Any
返回值
返回对输入参数计算得到的 128 位 MurmurHash3 哈希值。FixedString(16)
示例
用法示例
murmurHash3_32
引入于:v18.10
生成一个 MurmurHash3 哈希值。
对于不同参数类型的相同输入值,计算得到的哈希值可能会相同。
例如,这会影响不同大小的整数类型、具有相同数据的已命名和未命名 Tuple,以及具有相同数据的 Map 与其对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量可变的输入参数,用于计算哈希值。Any
返回值
返回根据输入参数计算得到的哈希值。UInt32
示例
用法示例
murmurHash3_64
自 v18.10 起提供
计算输入值的 MurmurHash3 哈希值。
对于不同参数类型但相同输入值的情况,计算得到的哈希值可能相同。
例如,这会影响不同大小的整数类型、包含相同数据的具名和非具名 Tuple,以及包含相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 数量不定的输入参数,用于计算哈希值。Any
返回值
返回对输入参数计算得到的哈希值。UInt64
示例
使用示例
ngramMinHash
引入版本:v21.1
将一个 ASCII 字符串按 ngramsize 个字符拆分为 n-gram,并为每个 n-gram 计算哈希值,然后返回包含这些哈希值的元组。
使用 hashnum 个最小哈希来计算最小哈希,并使用 hashnum 个最大哈希来计算最大哈希。
区分大小写。
可以与 tupleHammingDistance 一起用于检测近似重复字符串。
对于两个字符串,如果两个字符串返回的哈希完全相同,那么这两个字符串就是相同的。
语法
参数
string— 要计算哈希值的字符串。Stringngramsize— 可选。n-gram 的长度,取值为从1到25的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值为从1到25的任意整数。默认值为6。UInt8
返回值
返回一个包含两个哈希值的元组——最小值和最大值。Tuple
示例
用法示例
ngramMinHashArg
引入于:v21.1
将 ASCII 字符串按 ngramsize 个字符拆分为 n-gram(n 元语法),并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 ngramMinHash 函数计算得到。
区分大小写。
语法
参数
string— 要计算哈希的字符串。Stringngramsize— 可选。n-gram 的大小,取值为1到25之间的任意值。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值为1到25之间的任意值。默认值为6。UInt8
返回值
返回一个包含两个元组的元组,每个内部元组包含 hashnum 个 n-gram。Tuple(String)
示例
用法示例
ngramMinHashArgCaseInsensitive
引入版本:v21.1
将一个 ASCII 字符串按 ngramsize 个字符拆分为 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由 ngramMinHashCaseInsensitive 函数在相同输入下计算得出。
该函数对大小写不敏感。
语法
参数
string— 要计算哈希值的字符串。Stringngramsize— 可选。n-gram 的大小,取值范围为1到25的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小/最大哈希数量,取值范围为1到25的任意整数。默认值为6。UInt8
返回值
返回一个元组,其中包含两个元组,每个元组包含 hashnum 个 n-gram。Tuple(Tuple(String))
示例
用法示例
ngramMinHashArgCaseInsensitiveUTF8
引入版本:v21.1
将 UTF-8 字符串拆分为由 ngramsize 个字符组成的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 ngramMinHashCaseInsensitiveUTF8 函数计算得到。
该函数不区分大小写。
语法
参数
string— 要计算哈希的字符串。Stringngramsize— 可选。n-gram 的长度,取值范围为1到25,默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希数,取值范围为1到25,默认值为6。UInt8
返回值
返回一个元组,其中包含两个元组,每个内部元组各包含 hashnum 个 n-gram。Tuple(Tuple(String))
示例
使用示例
ngramMinHashArgUTF8
引入版本:v21.1
将 UTF-8 字符串拆分为由 ngramsize 个字符组成的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值是通过对相同输入调用 ngramMinHashUTF8 函数计算得到的。
该函数区分大小写。
语法
参数
string— 要计算哈希的字符串。Stringngramsize— 可选。n-gram 的大小,取值为1到25之间的任意整数,默认值为3。UInt8hashnum— 可选。用于计算结果的最小哈希和最大哈希的数量,取值为1到25之间的任意整数,默认值为6。UInt8
返回值
返回一个元组,内含两个元组,每个元组包含 hashnum 个 n-gram。Tuple(Tuple(String))
示例
使用示例
ngramMinHashCaseInsensitive
引入于:v21.1
将一个 ASCII 字符串按长度为 ngramsize 的 n-gram 拆分,并计算每个 n-gram 的哈希值,返回包含这些哈希值的元组。
使用 hashnum 个最小哈希来计算最小哈希,使用 hashnum 个最大哈希来计算最大哈希。
大小写不敏感。
可与 tupleHammingDistance 一起用于检测近似重复的字符串。
对于两个字符串,如果返回的哈希都完全相同,则可以认为这两个字符串是相同的。
语法
参数
string— 字符串。String。-ngramsize— n-gram 的大小。可选。可能的取值:从1到25的任意整数。默认值:3。UInt8。-hashnum— 用于计算结果的最小和最大哈希值的数量。可选。可能的取值:从1到25的任意整数。默认值:6。UInt8。
返回值
包含两个哈希值的 Tuple——最小值和最大值。Tuple(UInt64, UInt64). Tuple
示例
用法示例
ngramMinHashCaseInsensitiveUTF8
引入版本:v21.1
将 UTF-8 字符串按 ngramsize 个符号拆分为 n-gram,为每个 n-gram 计算哈希值,并返回包含这些哈希的元组。
使用 hashnum 个最小哈希来计算最小哈希,使用 hashnum 个最大哈希来计算最大哈希。
该函数不区分大小写。
可与 tupleHammingDistance 一起使用以检测近似重复的字符串。
对于两个字符串,如果返回的哈希完全相同,则认为这两个字符串是相同的。
语法
参数
string— 要计算哈希值的字符串。Stringngramsize— 可选。n-gram 的长度,取值范围为1到25。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值范围为1到25。默认值为6。UInt8
返回值
返回一个包含两个哈希值的元组——最小哈希值和最大发电哈希值。Tuple
示例
使用示例
ngramMinHashUTF8
引入版本:v21.1
将 UTF-8 字符串按 ngramsize 个字符拆分成 n-gram,为每个 n-gram 计算哈希值,并返回包含这些哈希值的元组。
使用 hashnum 个最小哈希来计算最小哈希,并使用 hashnum 个最大哈希来计算最大哈希。
区分大小写。
可与 tupleHammingDistance 一起用于检测近似重复的字符串。
对于两个字符串,如果两个字符串返回的哈希相同,则这两个字符串被视为相同。
语法
参数
string— 要计算哈希值的字符串。Stringngramsize— 可选。n-gram 的大小,取值为1到25之间的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值数量,取值为1到25之间的任意整数。默认值为6。UInt8
返回值
返回一个包含两个哈希值(最小值和最大值)的元组。Tuple
示例
用法示例
ngramSimHash
引入版本:v21.1
将一个 ASCII 字符串按 ngramsize 个字符拆分为 n-gram,并返回该 n-gram 的 simhash。
可与 bitHammingDistance 一起用于检测近似重复字符串。两字符串计算得到的 simhash 值之间的 Hamming 距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
返回为输入字符串计算得到的哈希值。UInt64
示例
用法示例
ngramSimHashCaseInsensitive
引入版本:v21.1
将一个 ASCII 字符串拆分为由 ngramsize 个字符组成的 n-gram,并返回这些 n-gram 的 simhash。
大小写不敏感。
可结合 bitHammingDistance 用于检测近似重复的字符串。
两个字符串计算得到的 simhashes 的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
示例
用法示例
ngramSimHashCaseInsensitiveUTF8
引入于:v21.1
将 UTF-8 字符串拆分为由 ngramsize 个字符组成的 n-gram,并返回这些 n-gram 的 simhash 值。
该函数对大小写不敏感。
可配合 bitHammingDistance 用于检测近似重复字符串。两个字符串计算得到的 simhashes 之间的 Hamming Distance 越小,这两个字符串相同的可能性越大。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
使用示例
ngramSimHashUTF8
引入版本:v21.1
将一个 UTF-8 编码的字符串拆分为由 ngramsize 个字符组成的 n-gram,并返回该 n-gram 的 simhash 值。
该函数区分大小写。
可结合 bitHammingDistance 用于检测近似重复字符串。
两个字符串计算得到的 simhashes 之间的 Hamming 距离 越小,这两个字符串相同的可能性就越高。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
用法示例
sipHash128
引入版本:v1.1
与 sipHash64 类似,但会生成 128 位哈希值,即最终的异或折叠(xor-folding)操作会进行到 128 位。
sipHash128Reference这个 128 位变种与参考实现不同,安全性更弱。
该版本存在的原因是:在其编写时,SipHash 尚没有官方的 128 位扩展。
新项目建议使用 sipHash128Reference。
语法
参数
arg1[, arg2, ...]— 要计算哈希值的数量可变的输入参数。Any
返回值
返回一个 128 位的 SipHash 哈希值。FixedString(16)
示例
用法示例
sipHash128Keyed
引入版本:v23.2
与 sipHash128 相同,但额外接受一个显式密钥参数,而不是使用固定密钥。
这个 128 位变体与参考实现不同,安全性更弱。
之所以存在这个版本,是因为在它编写时,SipHash 还没有官方的 128 位扩展。
新项目应优先使用 sipHash128ReferenceKeyed。
语法
参数
(k0, k1)— 由两个 UInt64 值组成、表示密钥的元组。Tuple(UInt64, UInt64)arg1[, arg2, ...]— 需要计算哈希值的一组可变数量的输入参数。Any
返回值
类型为 FixedString(16) 的 128 位 SipHash 哈希值。FixedString(16)
示例
用法示例
sipHash128Reference
引入版本:v23.2
类似于 sipHash128,但实现的是 SipHash 原作者提出的 128 位算法。
语法
参数
arg1[, arg2, ...]— 用于计算哈希的数量不定的输入参数。Any
返回值
返回对输入参数计算得到的 128 位 SipHash 哈希值。FixedString(16)
示例
使用示例
sipHash128ReferenceKeyed
引入于:v23.2
与 sipHash128Reference 相同,但此外还接收一个显式的密钥参数,而不是使用固定密钥。
语法
参数
(k0, k1)— 由两个值组成的元组,用于表示密钥。Tuple(UInt64, UInt64)arg1[, arg2, ...]— 需要计算哈希的数量可变的输入参数列表。Any
返回值
返回对输入参数计算得到的 128 位 SipHash 哈希值。FixedString(16)
示例
使用示例
sipHash64
引入版本:v1.1
生成一个 64 位的 SipHash 哈希值。
这是一个密码学哈希函数。它的速度至少比 MD5 哈希函数快 3 倍。
该函数会将所有输入参数重新解释为字符串,并为每个参数计算哈希值。 然后使用以下算法组合这些哈希值:
- 将第一个和第二个哈希值拼接成一个数组并对其进行哈希。
- 将前一步计算得到的哈希值与第三个输入参数的哈希值以相同方式再进行一次哈希。
- 对原始输入的所有剩余哈希值重复此计算。
对于不同参数类型但具有相同输入值的情况,计算出的哈希值可能相同。
例如,这会影响不同大小的整数类型、具有相同数据的具名和非具名 Tuple,以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型。
语法
参数
arg1[, arg2, ...]— 可变数量的输入参数。Any
返回值
返回根据输入参数计算得到的哈希值。UInt64
示例
使用示例
sipHash64Keyed
引入版本:v23.2
类似于 sipHash64,但还需要显式提供一个密钥参数,而不是使用固定密钥。
语法
参数
(k0, k1)— 由两个值组成、表示键的元组。Tuple(UInt64, UInt64)arg1[,arg2, ...]— 数量可变的输入参数。Any
返回值
返回对输入值计算得到的哈希值。UInt64
示例
用法示例
wordShingleMinHash
引入版本:v21.1
将一个 ASCII 字符串拆分为由 shinglesize 个单词组成的分区片段(shingles),为每个 shingle 计算哈希值,并返回一个包含这些哈希值的 tuple。
使用 hashnum 个最小哈希值来计算最小哈希,使用 hashnum 个最大哈希值来计算最大哈希。
大小写敏感。
可与 tupleHammingDistance 一起使用来检测近似重复字符串。
对于两个字符串,如果它们返回的哈希值完全相同,则这两个字符串相同。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。word shingle(词片段)的大小,取值范围为1到25。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希的数量,取值范围为1到25。默认值为6。UInt8
返回值
返回一个包含两个哈希的元组——最小值和最大值。Tuple(UInt64, UInt64)
示例
用法示例
wordShingleMinHashArg
引入版本:v1.1
将一个 ASCII 字符串拆分为由 shinglesize 个单词组成的分区片段(shingles),并返回其中单词哈希值最小和最大的 shingles,这些哈希值由在相同输入下调用 wordShingleMinHash 函数计算得出。
该函数区分大小写。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。word shingle 的大小,取值为1到25之间的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希的数量,取值为1到25之间的任意整数。默认值为6。UInt8
返回值
返回一个元组,其中包含两个元组,每个元组包含 hashnum 个 word shingle。Tuple(Tuple(String))
示例
用法示例
wordShingleMinHashArgCaseInsensitive
引入版本:v21.1
将一个 ASCII 字符串按每 shinglesize 个单词划分为若干分区片段(shingle),并返回其中单词哈希值最小和最大的分区片段。这些哈希值通过使用相同输入的 wordShingleMinHashCaseInsensitive 函数计算得到。
该函数不区分大小写。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。word shingle 的大小,取值为1到25之间的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值为1到25之间的任意整数。默认值为6。UInt8
返回值
返回一个元组,其中包含两个元组,每个元组包含 hashnum 个 word shingle。Tuple(Tuple(String))
示例
用法示例
wordShingleMinHashArgCaseInsensitiveUTF8
引入版本:v21.1
将 UTF-8 字符串按每 shinglesize 个单词拆分为多个分区片段(shingles),并返回其中单词哈希值最小和最大的分区片段,这些哈希值是通过对相同输入调用 wordShingleMinHashCaseInsensitiveUTF8 FUNCTION 计算得到的。
该函数不区分大小写。
语法
参数
string— 要计算哈希的字符串。Stringshinglesize— 可选。word shingle(词片段)的大小,取值范围为1到25。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希数量,取值范围为1到25。默认值为6。UInt8
返回值
返回一个元组,其中包含两个元组,每个元组包含 hashnum 个 word shingle。Tuple(Tuple(String))
示例
用法示例
wordShingleMinHashArgUTF8
引入版本:v21.1
将一个 UTF-8 字符串拆分为由 shinglesize 个单词构成的分区片段(shingles),并返回在使用相同输入调用 wordShingleMinHashUTF8 函数时,其最小和最大单词哈希值所对应的 shingles。
该函数区分大小写。
语法
参数
string— 计算其哈希值的字符串。Stringshinglesize— 可选。word shingle 的大小,取值范围为从1到25的任意整数。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希的数量,取值范围为从1到25的任意整数。默认值为6。UInt8
返回值
返回一个包含两个元组的元组,每个元组包含 hashnum 个 word shingle。Tuple(Tuple(String))
示例
使用示例
wordShingleMinHashCaseInsensitive
引入版本:v21.1
将一个 ASCII 字符串拆分为由 shinglesize 个单词组成的片段(shingles),为每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。
使用 hashnum 个最小哈希来计算最小哈希,使用 hashnum 个最大哈希来计算最大哈希。
该函数对大小写不敏感。
可与 tupleHammingDistance 一起用于检测近似重复字符串。
对于两个字符串,如果返回的哈希值都相同,则可认为这两个字符串相同。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。word shingle(词片段)的大小,取值范围为1到25。默认值为3。UInt8hashnum— 可选。用于计算结果的最小哈希和最大哈希的数量,取值范围为1到25。默认值为6。UInt8
返回值
返回一个包含两个哈希值的元组——最小哈希和最大哈希。Tuple(UInt64, UInt64)
示例
用法示例
wordShingleMinHashCaseInsensitiveUTF8
引入于:v21.1
将一个 UTF-8 字符串拆分为由 shinglesize 个单词组成的分区片段(shingles),为每个 word shingle 计算哈希值,并返回包含这些哈希的元组。
使用 hashnum 个最小哈希来计算最小哈希,并使用 hashnum 个最大哈希来计算最大哈希。
该函数对大小写不敏感。
可与 tupleHammingDistance 一起使用来检测近似重复的字符串。
对于两个字符串,如果返回的哈希在两个字符串中完全相同,则认为这两个字符串相同。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。词 shingle 的大小,取值为1到25之间的任意数值。默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值为1到25之间的任意数值。默认值为6。UInt8
返回值
返回一个包含两个哈希值的元组 —— 最小哈希值和最大哈希值。Tuple(UInt64, UInt64)
示例
使用示例
wordShingleMinHashUTF8
引入版本:v21.1
将一个 UTF-8 字符串拆分为由 shinglesize 个单词组成的分区片段(shingles),为每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。
使用 hashnum 个最小哈希来计算最小哈希,使用 hashnum 个最大哈希来计算最大哈希。
区分大小写。
可与 tupleHammingDistance 一起用于检测近似重复字符串。
对于两个字符串,如果返回的哈希值在两者中都完全相同,则这两个字符串相同。
语法
参数
string— 要计算哈希值的字符串。Stringshinglesize— 可选。word shingle(词片段)的大小,取值范围为1到25,默认值为3。UInt8hashnum— 可选。用于计算结果的最小和最大哈希值的数量,取值范围为1到25,默认值为6。UInt8
返回值
返回一个包含两个哈希值(最小值和最大值)的元组。Tuple(UInt64, UInt64)
示例
使用示例
wordShingleSimHash
引入于:v21.1
将 ASCII 字符串拆分成由 shinglesize 个单词组成的片段(shingles),并返回这些单词 shingle 对应的 simhash 值。
区分大小写。
可与 bitHammingDistance 一起使用,用于检测近似重复的字符串。
两个字符串计算得到的 simhash 值之间的汉明距离越小,这两个字符串为同一内容的可能性就越大。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
用法示例
wordShingleSimHashCaseInsensitive
引入于:v21.1
将一个 ASCII 字符串拆分为由 shinglesize 个单词组成的片段(shingles),并返回这些词片段的 simhash。
该函数对大小写不敏感。
可与 bitHammingDistance 一起用于检测近似重复的字符串。
两个字符串计算得到的 simhashes 的汉明距离越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
使用示例
wordShingleSimHashCaseInsensitiveUTF8
引入于:v1.1
将 UTF-8 编码的字符串按 shinglesize 个单词划分为 shingles(词片段),并返回这些词片段的 simhash。
比较时不区分大小写。
可与 bitHammingDistance 一起用于检测近似重复字符串。
两个字符串计算得到的 simhashes 的汉明距离越小,这两个字符串越有可能相同。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
用法示例
wordShingleSimHashUTF8
引入版本:v21.1
将 UTF-8 字符串按 shinglesize 个单词拆分为若干分区片段(shingles),并返回这些单词 shingle 的 simhash。
区分大小写。
可与 bitHammingDistance 一起用于检测部分重复的字符串。
两个字符串计算得到的 simhashes 的汉明距离越小,它们相同的可能性就越大。
语法
参数
返回值
返回计算得到的哈希值。UInt64
示例
用法示例
wyHash64
自 v22.7 起引入。
计算 64 位 wyHash64 哈希值。
语法
参数
arg— 要计算哈希值的字符串参数。String
返回值
返回计算得到的 64 位哈希值,类型为 UInt64
示例
使用示例
xxHash32
引入版本:v20.1
计算字符串的 xxHash。
64 位版本请参阅 xxHash64。
语法
参数
arg— 待进行哈希计算的输入字符串。String
返回值
返回输入字符串计算得到的 32 位哈希值。UInt32
示例
用法示例
xxHash64
自 v20.1 引入
根据字符串计算一个 xxHash。
32 位版本请参阅 xxHash32
语法
参数
arg— 要进行哈希计算的输入字符串。String
返回值
返回输入字符串计算得到的 64 位哈希值。UInt64
示例
用法示例
xxh3
自 v22.12 引入
计算一个 XXH3 64 位哈希值。
语法
参数
expr— 任意数据类型的表达式列表。Any
返回值
返回计算得到的 64 位 xxh3 哈希值,类型为 UInt64
示例
使用示例
xxh3_128
首次引入:v26.2
计算 XXH3 128 位哈希值。
语法
参数
expr— 任意数据类型的表达式列表。Any
返回值
返回计算得到的 128 位 xxh3 哈希值 UInt128
示例
使用示例