跳到主要内容
跳到主要内容

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

Returned value

Example

使用 hex 函数将结果表示为十六进制编码字符串。

查询:

sipHash64

生成 64 位 SipHash 哈希值。

这是一个加密哈希函数。它的速度至少是 MD5 哈希函数的三倍。

该函数 将所有输入参数解释为字符串 并计算每个参数的哈希值。然后通过以下算法组合哈希:

  1. 第一个和第二个哈希值连接到一个数组中并进行哈希。
  2. 先前计算的哈希值和第三个输入参数的哈希值以类似方式进行哈希。
  3. 对原始输入的所有剩余哈希值重复此计算。

Arguments

该函数接受可变数量的任何 支持的数据类型 的输入参数。

Returned Value

一个 UInt64 数据类型的哈希值。

请注意,对于不同参数类型的相同输入值,计算得到的哈希值可能相等。这影响了例如不同大小的整数类型,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 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

该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 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 更适合于稳定且可移植的值。

这些函数分别使用从所有 可用方法 中的 Fingerprint64Hash64 方法。

Arguments

该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 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

该函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 Array(Tuple(key, value)) 类型),其哈希函数的计算值可能是相同的。

Returned Value

一个 UInt64 数据类型的哈希值。

Example

jumpConsistentHash

从一个 UInt64 计算 JumpConsistentHash。 接受两个参数:一个 UInt64 类型的键和桶的数量。返回 Int32。 有关更多信息,请参见链接:JumpConsistentHash

kostikConsistentHash

由 Konstantin 'kostik' Oblakov 提供的 O(1) 时间和空间一致哈希算法。以前称为 yandexConsistentHash

Syntax

别名:yandexConsistentHash (保留用于向后兼容)。

Parameters

  • input: 一个 UInt64 类型的键 UInt64
  • n: 桶的数量。 UInt16

Returned value

  • 一个 UInt16 数据类型的哈希值。

Implementation details

当 n <= 32768 时,它效率较高。

Example

查询:

murmurHash2_32, murmurHash2_64

生成 MurmurHash2 哈希值。

Arguments

这两个函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 Array(Tuple(key, value)) 类型),其哈希函数的计算值可能是相同的。

Returned Value

  • murmurHash2_32 函数返回类型为 UInt32 的哈希值。
  • murmurHash2_64 函数返回类型为 UInt64 的哈希值。

Example

gccMurmurHash

使用与 gcc 相同的哈希种子计算 64 位 MurmurHash2 哈希值。它在 Clang 和 GCC 构建之间是可移植的。

Syntax

Arguments

Returned value

  • 计算得到的哈希值。 UInt64

Example

查询:

结果:

kafkaMurmurHash

使用与 Kafka 相同的哈希种子计算 32 位 MurmurHash2 哈希值,并且不使用最高位,以便与 Default Partitioner 兼容。

Syntax

Arguments

Returned value

  • 计算得到的哈希值。 UInt32

Example

查询:

结果:

murmurHash3_32, murmurHash3_64

生成 MurmurHash3 哈希值。

Arguments

这两个函数接受可变数量的输入参数。参数可以是任何 支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数,带有相同数据的命名和未命名的 TupleMap 以及相应的具有相同数据的 Array(Tuple(key, value)) 类型),其哈希函数的计算值可能是相同的。

Returned Value

  • murmurHash3_32 函数返回类型为 UInt32 的哈希值。
  • murmurHash3_64 函数返回类型为 UInt64 的哈希值。

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

备注

返回类型为 xxHash32 的将为 UInt32,而 xxHash64 将为 UInt64

Example

查询:

结果:

See Also

ngramSimHash

将 ASCII 字符串分成 n-grams,大小为 ngramsize 符号,并返回 n-gram simhash。区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • ngramsize — n-gram 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

ngramSimHashCaseInsensitive

将 ASCII 字符串分成 n-grams,大小为 ngramsize 符号,并返回 n-gram simhash。不区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • ngramsize — n-gram 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

ngramSimHashUTF8

将 UTF-8 字符串分成 n-grams,大小为 ngramsize 符号,并返回 n-gram simhash。区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • ngramsize — n-gram 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

ngramSimHashCaseInsensitiveUTF8

将 UTF-8 字符串分成 n-grams,大小为 ngramsize 符号,并返回 n-gram simhash。不区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • ngramsize — n-gram 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

wordShingleSimHash

将 ASCII 字符串分成部分(shingles),大小为 shinglesize 个单词,并返回单词 shingle 的 simhash。区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • shinglesize — 单词 shingle 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

wordShingleSimHashCaseInsensitive

将 ASCII 字符串分成部分(shingles),大小为 shinglesize 个单词,并返回单词 shingle 的 simhash。不区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • shinglesize — 单词 shingle 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

wordShingleSimHashUTF8

将 UTF-8 字符串分成部分(shingles),大小为 shinglesize 个单词,并返回单词 shingle 的 simhash。区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • shinglesize — 单词 shingle 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

wordShingleSimHashCaseInsensitiveUTF8

将 UTF-8 字符串分成部分(shingles),大小为 shinglesize 个单词,并返回单词 shingle 的 simhash。不区分大小写。

可以用于检测半重复字符串,配合 bitHammingDistance 使用。计算的两个字符串的 simhashesHamming Distance 越小,这两 string 越可能相同。

Syntax

Arguments

  • string — 字符串。 字符串
  • shinglesize — 单词 shingle 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8

Returned value

Example

查询:

结果:

wyHash64

生成 64 位 wyHash64 哈希值。

Syntax

Arguments

Returned value

Example

查询:

结果:

ngramMinHash

将 ASCII 字符串分成 n-grams,大小为 ngramsize 符号,并计算每个 n-gram 的哈希值。使用 hashnum 最小哈希计算最小哈希,使用 hashnum 最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。

可以用于检测半重复字符串,配合 tupleHammingDistance 使用。对于两个字符串:如果返回的哈希之一在两个字符串中是相同的,我们认为这两个字符串是相同的。

Syntax

Arguments

  • string — 字符串。 字符串
  • ngramsize — n-gram 的大小。可选。可能值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能值:从 125 的任意数字。默认值:6UInt8

Returned value

  • 包含两个哈希的元组 — 最小哈希和最大哈希。 Tuple(UInt64, UInt64)。

Example

查询:

结果:

ngramMinHashCaseInsensitive

将 ASCII 字符串拆分为 ngramsize 符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashUTF8

将 UTF-8 字符串拆分为 ngramsize 符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashCaseInsensitiveUTF8

将 UTF-8 字符串拆分为 ngramsize 符号的 n-grams,并计算每个 n-gram 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashArg

将 ASCII 字符串拆分为 ngramsize 符号的 n-grams,并返回通过相同输入计算的 ngramMinHash 函数得到的具有最小和最大哈希的 n-grams。区分大小写。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashArgCaseInsensitive

将 ASCII 字符串拆分为 ngramsize 符号的 n-grams,并返回通过相同输入计算的 ngramMinHashCaseInsensitive 函数得到的具有最小和最大哈希的 n-grams。区分大小写。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashArgUTF8

将 UTF-8 字符串拆分为 ngramsize 符号的 n-grams,并返回通过相同输入计算的 ngramMinHashUTF8 函数得到的具有最小和最大哈希的 n-grams。区分大小写。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

ngramMinHashArgCaseInsensitiveUTF8

将 UTF-8 字符串拆分为 ngramsize 符号的 n-grams,并返回通过相同输入计算的 ngramMinHashCaseInsensitiveUTF8 函数得到的具有最小和最大哈希的 n-grams。区分大小写。

语法

参数

  • string — 字符串。 String
  • ngramsize — n-gram 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHash

将 ASCII 字符串拆分为 shinglesize 个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashCaseInsensitive

将 ASCII 字符串拆分为 shinglesize 个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashUTF8

将 UTF-8 字符串拆分为 shinglesize 个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashCaseInsensitiveUTF8

将 UTF-8 字符串拆分为 shinglesize 个单词的部分(shingles),并计算每个单词 shingle 的哈希值。使用 hashnum 最小哈希计算最小哈希,并使用 hashnum 最大哈希计算最大哈希。返回一个包含这些哈希的元组。区分大小写。

可用于检测半重复字符串,结合使用 tupleHammingDistance。对于两个字符串:如果返回的哈希值之一在这两个字符串中相同,我们认为这两个字符串是相同的。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashArg

将 ASCII 字符串拆分为 shinglesize 个单词部分(shingles),并返回通过相同输入计算的 wordshingleMinHash 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashArgCaseInsensitive

将 ASCII 字符串拆分为 shinglesize 个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashCaseInsensitive 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashArgUTF8

将 UTF-8 字符串拆分为 shinglesize 个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashUTF8 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

wordShingleMinHashArgCaseInsensitiveUTF8

将 UTF-8 字符串拆分为 shinglesize 个单词部分(shingles),并返回通过相同输入计算的 wordShingleMinHashCaseInsensitiveUTF8 函数得到的具有最小和最大单词哈希的 shingles。区分大小写。

语法

参数

  • string — 字符串。 String
  • shinglesize — 单词 shingle 的大小。可选。可能的值:从 125 的任意数字。默认值:3UInt8
  • hashnum — 用于计算结果的最小和最大哈希的数量。可选。可能的值:从 125 的任意数字。默认值:6UInt8

返回值

示例

查询:

结果:

sqidEncode

将数字编码为 Sqid,即类似 YouTube 的 ID 字符串。 输出字母表为 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。 请勿将此函数用于哈希 - 生成的 ID 可以解码回原始数字。

语法

别名:sqid

参数

  • 任意数量的 UInt8、UInt16、UInt32 或 UInt64 数字。

返回值

一个 sqid String

示例

sqidDecode

Sqid 解码回其原始数字。 如果输入字符串不是有效的 sqid,则返回一个空数组。

语法

参数

返回值

将 sqid 转换为数字 Array(UInt64)

示例

keccak256

计算 Keccak-256 哈希字符串,并将结果字节集作为 FixedString 返回。

语法

此加密哈希函数在 EVM-based blockchains 中被广泛使用。

参数

  • s - 用于 Keccak-256 哈希计算的输入字符串。 String

返回值

  • Keccak-256 哈希作为 FixedString(32) 类型的字节数组。 FixedString

示例

使用函数 hex 将结果格式化为十六进制编码字符串。

查询:

结果: