Hash Functions
哈希函数可用于元素的确定性伪随机洗牌。
Simhash 是一种哈希函数,它为相近(相似)的参数返回相近的哈希值。
大多数哈希函数接受任意数量的任意类型的参数。
NULL 的哈希值是 NULL。要获得 Nullable 列的非 NULL 哈希值,请将其包装在元组中:
要计算整个表的内容的哈希值,请使用 sum(cityHash64(tuple(*)))
(或其他哈希函数)。tuple
确保包含 NULL 值的行不会被跳过。sum
确保行的顺序无关紧要。
halfMD5
将所有输入参数解释为字符串并计算每个参数的 MD5 哈希值。然后将哈希值组合,取结果字符串哈希的前 8 字节,并将其解释为大端字节顺序的 UInt64
。
该函数相对较慢(每个处理器核心每秒处理 500 万个短字符串)。 考虑使用 sipHash64 函数代替。
Arguments
该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,以及具有相同数据的 Map
和相应的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
一个 UInt64 数据类型的哈希值。
Example
MD4
计算字符串的 MD4,并将结果字节集作为 FixedString(16) 返回。
MD5
计算字符串的 MD5,并将结果字节集作为 FixedString(16) 返回。 如果您不特别需要 MD5,但需要一个体面的 128 位加密哈希,请使用 'sipHash128' 函数代替。 如果您想要与 md5sum 工具输出相同的结果,请使用 lower(hex(MD5(s)))。
RIPEMD160
生成 RIPEMD-160 哈希值。
Syntax
Parameters
input
: 输入字符串。 字符串
Returned value
- 160 位
RIPEMD-160
哈希值,类型为 FixedString(20)。
Example
使用 hex 函数将结果表示为十六进制编码字符串。
查询:
sipHash64
生成 64 位 SipHash 哈希值。
这是一个加密哈希函数。它的速度至少是 MD5 哈希函数的三倍。
该函数 将所有输入参数解释为字符串 并计算每个参数的哈希值。然后通过以下算法组合哈希:
- 第一个和第二个哈希值连接到一个数组中并进行哈希。
- 先前计算的哈希值和第三个输入参数的哈希值以类似方式进行哈希。
- 对原始输入的所有剩余哈希值重复此计算。
Arguments
该函数接受可变数量的任何 支持的数据类型 的输入参数。
Returned Value
一个 UInt64 数据类型的哈希值。
请注意,对于不同参数类型的相同输入值,计算得到的哈希值可能相等。这影响了例如不同大小的整数类型,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型。
Example
sipHash64Keyed
与 sipHash64 相同,但另外接收一个显式的密钥参数,而不是使用固定密钥。
Syntax
Arguments
与 sipHash64 相同,但第一个参数是表示密钥的两个 UInt64 值的元组。
Returned value
一个 UInt64 数据类型的哈希值。
Example
查询:
sipHash128
与 sipHash64 类似,但生成一个 128 位哈希值,即最终的异或折叠状态进行到 128 位。
这个 128 位变体与参考实现不同,并且它更弱。 这个版本存在的原因是,在编写时,没有官方的 128 位 SipHash 扩展。 新的项目应该使用 sipHash128Reference。
Syntax
Arguments
与 sipHash64 相同。
Returned value
一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
Example
查询:
结果:
sipHash128Keyed
与 sipHash128 相同,但另外接收一个显式的密钥参数,而不是使用固定密钥。
这个 128 位变体与参考实现不同,并且它更弱。 这个版本存在的原因是,在编写时,没有官方的 128 位 SipHash 扩展。 新的项目应该使用 sipHash128ReferenceKeyed。
Syntax
Arguments
与 sipHash128 相同,但第一个参数是表示密钥的两个 UInt64 值的元组。
Returned value
一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
Example
查询:
结果:
sipHash128Reference
与 sipHash128 相同,但实现了来自 SipHash 原始作者的 128 位算法。
Syntax
Arguments
与 sipHash128 相同。
Returned value
一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
Example
查询:
结果:
sipHash128ReferenceKeyed
与 sipHash128Reference 相同,但另外接收一个显式的密钥参数,而不是使用固定密钥。
Syntax
Arguments
与 sipHash128Reference 相同,但第一个参数是表示密钥的两个 UInt64 值的元组。
Returned value
一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
Example
查询:
结果:
cityHash64
生成 64 位 CityHash 哈希值。
这是一个快速的非加密哈希函数。它使用 CityHash 算法处理字符串参数,并为其他数据类型的参数使用实现特定的快速非加密哈希函数。该函数使用 CityHash 组合器来获得最终结果。
请注意,Google 在将 CityHash 添加到 ClickHouse 之后更改了 CityHash 的算法。换句话说,ClickHouse 的 cityHash64 和 Google 的上游 CityHash 现在生成不同的结果。ClickHouse 的 cityHash64 对应于 CityHash v1.0.2。
Arguments
该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
一个 UInt64 数据类型的哈希值。
Examples
调用示例:
以下示例展示了如何以行序列顺序计算整个表的校验和:
intHash32
从任何类型的整数计算一个 32 位哈希码。 这是一个相对快速的非加密哈希函数,适用于数字的平均质量。
Syntax
Arguments
int
— 要哈希的整数。 (U)Int*。
Returned value
- 32 位哈希码。 UInt32。
Example
查询:
结果:
intHash64
从任何类型的整数计算一个 64 位哈希码。 这是一个相对快速的非加密哈希函数,适用于数字的平均质量。 它的速度比 intHash32 快。
Syntax
Arguments
int
— 要哈希的整数。 (U)Int*。
Returned value
- 64 位哈希码。 UInt64。
Example
查询:
结果:
SHA1, SHA224, SHA256, SHA512, SHA512_256
计算字符串的 SHA-1, SHA-224, SHA-256, SHA-512, SHA-512-256 哈希,并将结果字节集作为 FixedString 返回。
Syntax
该函数操作相对较慢(SHA-1 每个处理器核心每秒处理约 500 万个短字符串,而 SHA-224 和 SHA-256 每秒约处理 220 万个)。
我们建议仅在需要特定哈希函数并且无法选择其他时使用此函数。
即使在这些情况下,我们也建议在将值插入表时离线应用该函数并预计算值,而不是在 SELECT
查询中应用。
Arguments
s
— 用于 SHA 哈希计算的输入字符串。 字符串。
Returned value
- SHA 哈希以未编码的十六进制 FixedString 形式返回。SHA-1 返回为 FixedString(20),SHA-224 返回为 FixedString(28),SHA-256 返回为 FixedString(32),SHA-512 返回为 FixedString(64)。 FixedString。
Example
使用 hex 函数将结果表示为十六进制编码字符串。
查询:
结果:
BLAKE3
计算 BLAKE3 哈希字符串,并将结果字节集作为 FixedString 返回。
Syntax
该加密哈希函数集成在 ClickHouse 中,使用 BLAKE3 Rust 库。该函数相当快速,性能大约比 SHA-2 快两倍,同时生成与 SHA-256 相同长度的哈希。
Arguments
- s - BLAKE3 哈希计算的输入字符串。 字符串。
Return value
- BLAKE3 哈希,类型为 FixedString(32) 的字节数组。 FixedString。
Example
使用函数 hex 将结果表示为十六进制编码字符串。
查询:
结果:
URLHash(url[, N])
一种快速、质量良好的非加密哈希函数,用于通过某种类型的规范化从 URL 中获得字符串。
URLHash(s)
– 从字符串计算哈希,末尾去掉一个斜杠 /
、?
或 #
,如果存在的话。
URLHash(s, N)
– 从字符串计算哈希,直到 URL 层次结构中的 N 级别,末尾去掉一个斜杠 /
、?
或 #
,如果存在的话。
层次结构与 URLHierarchy 中的相同。
farmFingerprint64
farmHash64
生成 64 位 FarmHash 或指纹值。farmFingerprint64
更适合于稳定且可移植的值。
这些函数分别使用从所有 可用方法 中的 Fingerprint64
和 Hash64
方法。
Arguments
该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
一个 UInt64 数据类型的哈希值。
Example
javaHash
从 字符串, 字节, 短整型, 整型, 长整型 计算 JavaHash。 这个哈希函数既不快速也没有很好的质量。使用它的唯一原因是在另一个系统中已经使用了该算法,并且您必须计算完全相同的结果。
请注意,Java 仅支持计算带符号整数哈希,因此如果要计算无符号整数哈希,必须将其转换为适当的带符号 ClickHouse 类型。
Syntax
Returned value
一个 Int32
数据类型的哈希值。
Example
查询:
结果:
查询:
结果:
javaHashUTF16LE
从字符串计算 JavaHash,假设它包含 UTF-16LE 编码的字节。
Syntax
Arguments
stringUtf16le
— UTF-16LE 编码的字符串。
Returned value
一个 Int32
数据类型的哈希值。
Example
正确的查询,包含 UTF-16LE 编码的字符串。
查询:
结果:
hiveHash
计算字符串的 HiveHash
。
这只是 JavaHash,其符号位为零。该函数用于 Apache Hive 版本 3.0 之前。这个哈希函数既不快速也没有很好的质量。使用它的唯一原因是在另一个系统中已经使用了该算法,并且您必须计算完全相同的结果。
Returned value
hiveHash
哈希值。 Int32。
Example
查询:
结果:
metroHash64
生成 64 位 MetroHash 哈希值。
Arguments
该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
一个 UInt64 数据类型的哈希值。
Example
jumpConsistentHash
从一个 UInt64 计算 JumpConsistentHash。 接受两个参数:一个 UInt64 类型的键和桶的数量。返回 Int32。 有关更多信息,请参见链接:JumpConsistentHash
kostikConsistentHash
由 Konstantin 'kostik' Oblakov 提供的 O(1) 时间和空间一致哈希算法。以前称为 yandexConsistentHash
。
Syntax
别名:yandexConsistentHash
(保留用于向后兼容)。
Parameters
Returned value
- 一个 UInt16 数据类型的哈希值。
Implementation details
当 n <= 32768 时,它效率较高。
Example
查询:
murmurHash2_32, murmurHash2_64
生成 MurmurHash2 哈希值。
Arguments
这两个函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
Example
gccMurmurHash
使用与 gcc 相同的哈希种子计算 64 位 MurmurHash2 哈希值。它在 Clang 和 GCC 构建之间是可移植的。
Syntax
Arguments
par1, ...
— 可变数量的参数,可以是任何 支持的数据类型。
Returned value
- 计算得到的哈希值。 UInt64。
Example
查询:
结果:
kafkaMurmurHash
使用与 Kafka 相同的哈希种子计算 32 位 MurmurHash2 哈希值,并且不使用最高位,以便与 Default Partitioner 兼容。
Syntax
Arguments
par1, ...
— 可变数量的参数,可以是任何 支持的数据类型。
Returned value
- 计算得到的哈希值。 UInt32。
Example
查询:
结果:
murmurHash3_32, murmurHash3_64
生成 MurmurHash3 哈希值。
Arguments
这两个函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 Tuple
,Map
以及相应的具有相同数据的 Array(Tuple(key, value))
类型),其哈希函数的计算值可能是相同的。
Returned Value
Example
murmurHash3_128
生成 128 位 MurmurHash3 哈希值。
Syntax
Arguments
Returned value
一个 128 位 MurmurHash3
哈希值。 FixedString(16)。
Example
查询:
结果:
xxh3
生成 64 位 xxh3 哈希值。
Syntax
Arguments
expr
— 一组 表达式,可以是任意数据类型。
Returned value
一个 64 位 xxh3
哈希值。 UInt64。
Example
查询:
结果:
xxHash32, xxHash64
从字符串计算 xxHash
。提供 32 位和 64 位两种形式。
Returned value
- 哈希值。 UInt32/64。
返回类型为 xxHash32
的将为 UInt32
,而 xxHash64
将为 UInt64
。
Example
查询:
结果:
See Also
ngramSimHash
将 ASCII 字符串分成 n-grams,大小为 ngramsize
符号,并返回 n-gram simhash
。区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
ngramSimHashCaseInsensitive
将 ASCII 字符串分成 n-grams,大小为 ngramsize
符号,并返回 n-gram simhash
。不区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
ngramSimHashUTF8
将 UTF-8 字符串分成 n-grams,大小为 ngramsize
符号,并返回 n-gram simhash
。区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
ngramSimHashCaseInsensitiveUTF8
将 UTF-8 字符串分成 n-grams,大小为 ngramsize
符号,并返回 n-gram simhash
。不区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
wordShingleSimHash
将 ASCII 字符串分成部分(shingles),大小为 shinglesize
个单词,并返回单词 shingle 的 simhash
。区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
wordShingleSimHashCaseInsensitive
将 ASCII 字符串分成部分(shingles),大小为 shinglesize
个单词,并返回单词 shingle 的 simhash
。不区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
wordShingleSimHashUTF8
将 UTF-8 字符串分成部分(shingles),大小为 shinglesize
个单词,并返回单词 shingle 的 simhash
。区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
wordShingleSimHashCaseInsensitiveUTF8
将 UTF-8 字符串分成部分(shingles),大小为 shinglesize
个单词,并返回单词 shingle 的 simhash
。不区分大小写。
可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashes
的 Hamming Distance 越小,这两 string 越可能相同。
Syntax
Arguments
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
wyHash64
生成 64 位 wyHash64 哈希值。
Syntax
Arguments
string
— 字符串。 字符串。
Returned value
- 哈希值。 UInt64。
Example
查询:
结果:
ngramMinHash
将 ASCII 字符串分成 n-grams,大小为 ngramsize
符号,并计算每个 n-gram 的哈希值。使用 hashnum
最小哈希计算最小哈希,使用 hashnum
最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。
可以用于检测半重复字符串,配合 tupleHammingDistance 使用。对于两个字符串:如果返回的哈希之一在两个字符串中是相同的,我们认为这两个字符串是相同的。
Syntax
Arguments
string
— 字符串。 字符串。ngramsize
— n-gram 的大小。可选。可能值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能值:从1
到25
的任意数字。默认值:6
。 UInt8。
Returned value
Example
查询:
结果:
ngramMinHashCaseInsensitive
将 ASCII 字符串拆分为 ngramsize
符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashUTF8
将 UTF-8 字符串拆分为 ngramsize
符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashCaseInsensitiveUTF8
将 UTF-8 字符串拆分为 ngramsize
符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArg
将 ASCII 字符串拆分为 ngramsize
符号的 n-grams,并返回通过相同输入计算的 ngramMinHash 函数得到的具有最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgCaseInsensitive
将 ASCII 字符串拆分为 ngramsize
符号的 n-grams,并返回通过相同输入计算的 ngramMinHashCaseInsensitive 函数得到的具有最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgUTF8
将 UTF-8 字符串拆分为 ngramsize
符号的 n-grams,并返回通过相同输入计算的 ngramMinHashUTF8 函数得到的具有最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgCaseInsensitiveUTF8
将 UTF-8 字符串拆分为 ngramsize
符号的 n-grams,并返回通过相同输入计算的 ngramMinHashCaseInsensitiveUTF8 函数得到的具有最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHash
将 ASCII 字符串拆分为 shinglesize
个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashCaseInsensitive
将 ASCII 字符串拆分为 shinglesize
个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashUTF8
将 UTF-8 字符串拆分为 shinglesize
个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashCaseInsensitiveUTF8
将 UTF-8 字符串拆分为 shinglesize
个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum
最小哈希计算最小哈希,并使用 hashnum
最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。
可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArg
将 ASCII 字符串拆分为 shinglesize
个单词部分(shingles),并返回通过相同输入计算的 wordshingleMinHash 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgCaseInsensitive
将 ASCII 字符串拆分为 shinglesize
个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashCaseInsensitive 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgUTF8
将 UTF-8 字符串拆分为 shinglesize
个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashUTF8 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgCaseInsensitiveUTF8
将 UTF-8 字符串拆分为 shinglesize
个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashCaseInsensitiveUTF8 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任意数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任意数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
sqidEncode
将数字编码为 Sqid,即类似 YouTube 的 ID 字符串。
输出字母表为 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
。
请勿将此函数用于哈希 - 生成的 ID 可以解码回原始数字。
语法
别名:sqid
参数
- 任意数量的 UInt8、UInt16、UInt32 或 UInt64 数字。
返回值
一个 sqid String。
示例
sqidDecode
将 Sqid 解码回其原始数字。 如果输入字符串不是有效的 sqid,则返回一个空数组。
语法
参数
- 一个 sqid - String
返回值
将 sqid 转换为数字 Array(UInt64)。
示例
keccak256
计算 Keccak-256 哈希字符串,并将结果字节集作为 FixedString 返回。
语法
此加密哈希函数在 EVM-based blockchains 中被广泛使用。
参数
- s - 用于 Keccak-256 哈希计算的输入字符串。 String。
返回值
- Keccak-256 哈希作为 FixedString(32) 类型的字节数组。 FixedString。
示例
使用函数 hex 将结果格式化为十六进制编码字符串。
查询:
结果: