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