字符串搜索函数
本节中的所有函数默认情况下是区分大小写的。通常通过单独的函数变体提供不区分大小写的搜索。
不区分大小写的搜索遵循英语的大小写规则。例如,英语中的大写字母 i
是 I
,而在土耳其语中是 İ
- 对于英语以外的语言,结果可能会出乎意料。
本节中的函数还假定被搜索的字符串(在本节中称为 haystack
)和搜索字符串(在本节中称为 needle
)是单字节编码文本。如果违反此假设,则不会抛出异常且结果是未定义的。使用UTF-8编码的字符串的搜索通常由单独的函数变体提供。同样,如果使用了UTF-8函数变体而输入字符串不是UTF-8编码文本,则不会抛出异常且结果是未定义的。请注意,没有执行自动 Unicode 标准化,但您可以使用 normalizeUTF8*() 函数来做到这一点。
position
返回子字符串 needle
在字符串 haystack
中的位置(以字节为单位,从 1 开始计数)。
语法
别名:
position(needle IN haystack)
参数
haystack
— 执行搜索的字符串。 String 或 Enum。needle
— 要搜索的子字符串。 String。start_pos
– 在haystack
中开始搜索的位置(基于1)。 UInt。 可选。
返回值
如果子字符串 needle
是空的,适用以下规则:
- 如果未指定
start_pos
:返回1
- 如果
start_pos = 0
:返回1
- 如果
start_pos >= 1
且start_pos <= length(haystack) + 1
:返回start_pos
- 否则:返回
0
相同的规则也适用于函数 locate
、positionCaseInsensitive
、positionUTF8
和 positionCaseInsensitiveUTF8
。
示例
查询:
结果:
带有 start_pos
参数的示例:
查询:
结果:
needle IN haystack
语法的示例:
查询:
结果:
带有空 needle
子字符串的示例:
查询:
结果:
locate
类似于 position,但参数 haystack
和 locate
交换。
该函数的行为依赖于 ClickHouse 的版本:
- 在版本 < v24.3 中,
locate
是position
函数的别名,并接受参数(haystack, needle[, start_pos])
。 - 在版本 >= 24.3 中,
locate
是一个单独的函数(为了更好地兼容 MySQL),并接受参数(needle, haystack[, start_pos])
。可以使用设置 function_locate_has_mysql_compatible_argument_order = false 恢复之前的行为。
语法
positionCaseInsensitive
Position 的不区分大小写变体。
示例
查询:
结果:
positionUTF8
类似于 position,但假定 haystack
和 needle
是UTF-8编码字符串。
示例
函数 positionUTF8
正确地将字符 ö
(由两个点表示)视为一个Unicode代码点:
查询:
结果:
positionCaseInsensitiveUTF8
类似于 positionUTF8,但执行不区分大小写的搜索。
multiSearchAllPositions
类似于 position,但返回多个 needle
子字符串在 haystack
字符串中的位置数组(以字节为单位,从 1 开始计数)。
所有 multiSearch*()
函数仅支持最多 28 个 needle。
语法
参数
返回值
- 如果找到子字符串,返回以字节为单位的起始位置数组,并从 1 开始计数。
- 如果未找到子字符串,则返回 0。
示例
查询:
结果:
multiSearchAllPositionsCaseInsensitive
类似于 multiSearchAllPositions,但忽略大小写。
语法
参数
返回值
- 如果找到子字符串,返回以字节为单位的起始位置数组,并从 1 开始计数。
- 如果未找到子字符串,则返回 0。
示例
查询:
结果:
multiSearchAllPositionsUTF8
类似于 multiSearchAllPositions,但假定 haystack
和 needle
子字符串是 UTF-8 编码字符串。
语法
参数
返回值
- 如果找到子字符串,返回以字节为单位的起始位置数组,并从 1 开始计数。
- 如果未找到子字符串,则返回 0。
示例
给定 ClickHouse
作为 UTF-8 字符串,查找 C
(\x43
) 和 H
(\x48
) 的位置。
查询:
结果:
multiSearchAllPositionsCaseInsensitiveUTF8
类似于 multiSearchAllPositionsUTF8,但忽略大小写。
语法
参数
返回值
- 如果找到子字符串,返回以字节为单位的起始位置数组,并从 1 开始计数。
- 如果未找到子字符串,则返回 0。
示例
给定 ClickHouse
作为 UTF-8 字符串,查找 c
(\x63
) 和 h
(\x68
) 的位置。
查询:
结果:
multiSearchFirstPosition
类似于 position
,但返回一个 haystack
字符串中与多个 needle
字符串匹配的最左侧偏移。
函数 multiSearchFirstPositionCaseInsensitive
、multiSearchFirstPositionUTF8
和 multiSearchFirstPositionCaseInsensitiveUTF8
提供该函数的不区分大小写和/或 UTF-8 变体。
语法
参数
返回值
- 在
haystack
字符串中与多个needle
字符串匹配的最左侧偏移。 - 如果没有匹配,则返回 0。
示例
查询:
结果:
multiSearchFirstPositionCaseInsensitive
类似于 multiSearchFirstPosition
,但忽略大小写。
语法
参数
返回值
- 在
haystack
字符串中与多个needle
字符串匹配的最左侧偏移。 - 如果没有匹配,则返回 0。
示例
查询:
结果:
multiSearchFirstPositionUTF8
类似于 multiSearchFirstPosition
,但假设 haystack
和 needle
是 UTF-8 字符串。
语法
参数
返回值
- 在
haystack
字符串中与多个needle
字符串匹配的最左侧偏移。 - 如果没有匹配,则返回 0。
示例
查找 UTF-8 字符串 hello world
中与给定的 needles 匹配的最左侧偏移。
查询:
结果:
multiSearchFirstPositionCaseInsensitiveUTF8
类似于 multiSearchFirstPosition
,但假设 haystack
和 needle
是 UTF-8 字符串并且忽略大小写。
语法
参数
返回值
- 在
haystack
字符串中与多个needle
字符串匹配的最左侧偏移,忽略大小写。 - 如果没有匹配,则返回 0。
示例
查找 UTF-8 字符串 HELLO WORLD
中与给定的 needles 匹配的最左侧偏移。
查询:
结果:
multiSearchFirstIndex
返回字符串 haystack
中最左侧找到的 needlei 的索引 i
(从 1 开始),否则返回 0。
函数 multiSearchFirstIndexCaseInsensitive
、multiSearchFirstIndexUTF8
和 multiSearchFirstIndexCaseInsensitiveUTF8
提供该函数的不区分大小写和/或 UTF-8 变体。
语法
参数
返回值
- 最左侧找到的 needle 的索引(从 1 开始)。否则返回 0,如果没有匹配。 UInt8。
示例
查询:
结果:
multiSearchFirstIndexCaseInsensitive
返回字符串 haystack
中最左侧找到的 needlei 的索引 i
(从 1 开始),否则返回 0。忽略大小写。
语法
参数
返回值
- 最左侧找到的 needle 的索引(从 1 开始)。否则返回 0,如果没有匹配。 UInt8。
示例
查询:
结果:
multiSearchFirstIndexUTF8
返回字符串 haystack
中最左侧找到的 needlei 的索引 i
(从 1 开始),否则返回 0。假定 haystack
和 needle
是 UTF-8 编码的字符串。
语法
参数
返回值
- 最左侧找到的 needle 的索引(从 1 开始)。否则返回 0,如果没有匹配。 UInt8。
示例
给定 Hello World
作为 UTF-8 字符串,查找 UTF-8 字符串 Hello
和 World
的第一个索引。
查询:
结果:
multiSearchFirstIndexCaseInsensitiveUTF8
返回字符串 haystack
中最左侧找到的 needlei 的索引 i
(从 1 开始),否则返回 0。假定 haystack
和 needle
是 UTF-8 编码的字符串。忽略大小写。
语法
参数
返回值
- 最左侧找到的 needle 的索引(从 1 开始)。否则返回 0,如果没有匹配。 UInt8。
示例
给定 HELLO WORLD
作为 UTF-8 字符串,查找 UTF-8 字符串 hello
和 world
的第一个索引。
查询:
结果:
multiSearchAny
如果至少有一个字符串 needlei 匹配字符串 haystack
则返回 1;否则返回 0。
函数 multiSearchAnyCaseInsensitive
、multiSearchAnyUTF8
和 multiSearchAnyCaseInsensitiveUTF8
提供该函数的不区分大小写和/或 UTF-8 变体。
语法
参数
返回值
- 1,如果至少有一个匹配。
- 0,如果没有至少一个匹配。
示例
查询:
结果:
multiSearchAnyCaseInsensitive
类似于 multiSearchAny,但忽略大小写。
语法
参数
返回值
- 1,如果至少有一个不区分大小写的匹配。
- 0,如果没有至少一个不区分大小写的匹配。
示例
查询:
结果:
multiSearchAnyUTF8
类似于 multiSearchAny,但假定 haystack
和 needle
子字符串是 UTF-8 编码字符串。
语法
参数
返回值
- 1,如果至少有一个匹配。
- 0,如果没有至少一个匹配。
示例
给定 ClickHouse
作为 UTF-8 字符串,检查字中是否有字母 C
('\x43') 或 H
('\x48')。
查询:
结果:
multiSearchAnyCaseInsensitiveUTF8
类似于 multiSearchAnyUTF8,但忽略大小写。
语法
参数
返回值
- 1,如果至少有一个不区分大小写的匹配。
- 0,如果没有至少一个不区分大小写的匹配。
示例
给定 ClickHouse
作为 UTF-8 字符串,检查字中是否有不区分大小写的字母 h
(\x68
)。
查询:
结果:
match
返回字符串 haystack
是否匹配正则表达式 pattern
,使用 re2 正则表达式语法。
匹配基于 UTF-8,例如 .
匹配 Unicode 代码点 ¥
,其在 UTF-8 中使用两个字节表示。正则表达式不得包含空字节。如果 haystack 或 pattern 不是有效的 UTF-8,则行为是未定义的。
与 re2 的默认行为不同,.
匹配换行符。要禁用此功能,可以在模式前加上 (?-s)
。
如果您只想在字符串中搜索子字符串,可以使用 like 或 position 等函数,它们比此函数快得多。
语法
别名:haystack REGEXP pattern 运营者
multiMatchAny
类似于 match
,但如果至少有一个模式匹配,则返回 1;否则返回 0。
multi[Fuzzy]Match*()
函数系列使用(Vectorscan)[https://github.com/VectorCamp/vectorscan] 库。因此,它们仅在 ClickHouse 编译时支持 vectorScan 时才能启用。
要关闭所有使用 hyperscan 的函数,请使用设置 SET allow_hyperscan = 0;
。
由于 vectorscan 的限制,haystack
字符串的长度必须小于 232 字节。
Hyperscan 通常容易受到正则表达式拒绝服务(ReDoS)攻击(例如,见(这里)[https://www.usenix.org/conference/usenixsecurity22/presentation/turonova]、(这里)[https://doi.org/10.1007/s10664-021-10033-1] 和(这里)[https://doi.org/10.1145/3236024.3236027])。建议用户仔细检查提供的模式。
如果您只想在字符串中搜索多个子字符串,可以使用函数 multiSearchAny,它比此函数快得多。
语法
multiMatchAnyIndex
类似于 multiMatchAny
,但返回与 haystack
匹配的任意索引。
语法
multiMatchAllIndices
类似于 multiMatchAny
,但返回与 haystack
匹配的所有索引的数组,顺序可以是任意的。
语法
multiFuzzyMatchAny
类似于 multiMatchAny
,但如果有任何模式与 haystack
匹配,且在常量 编辑距离 内,则返回 1。此函数依赖于 hyperscan 库的实验性特性,对于某些极端情况可能会比较慢。性能取决于编辑距离值和使用的模式,但始终相比于非模糊变体更昂贵。
multiFuzzyMatch*()
函数系列由于 hyperscan 的限制不支持 UTF-8 正则表达式(将其视为字节序列)。
语法
multiFuzzyMatchAnyIndex
类似于 multiFuzzyMatchAny
,但返回在常量编辑距离内与 haystack
匹配的任意索引。
语法
multiFuzzyMatchAllIndices
类似于 multiFuzzyMatchAny
,但返回在常量编辑距离内与 haystack
匹配的所有索引的数组,顺序可以是任意的。
语法
extract
返回字符串中正则表达式的第一个匹配项。
如果 haystack
不匹配 pattern
正则表达式,则返回空字符串。
如果正则表达式有捕获组,则该函数将输入字符串与第一个捕获组匹配。
语法
参数
haystack
— 输入字符串。 String。pattern
— 使用 re2 正则表达式语法 的正则表达式。
返回值
- 正则表达式在 haystack 字符串中的第一个匹配。 String。
示例
查询:
结果:
extractAll
返回字符串中正则表达式的所有匹配项的数组。如果 haystack
不匹配 pattern
正则表达式,则返回空字符串。
关于子模式的行为与函数 extract
相同。
语法
参数
haystack
— 输入字符串。 String。pattern
— 使用 re2 正则表达式语法 的正则表达式。
返回值
示例
查询:
结果:
extractAllGroupsHorizontal
使用 pattern
正则表达式匹配 haystack
字符串的所有组。返回一个数组的数组,第一个数组包含匹配第一个组的所有片段,第二个数组包含匹配第二个组的片段,等等。
此函数比 extractAllGroupsVertical 慢。
语法
参数
haystack
— 输入字符串。 String。pattern
— 使用 re2 正则表达式语法 的正则表达式。必须包含组,每组用括号括起来。如果pattern
不包含组,则会引发异常。 String。
返回值
- 匹配的数组数组。 Array。
如果 haystack
不匹配 pattern
正则表达式,则返回一个空数组的数组。
示例
结果:
extractGroups
用给定的正则表达式匹配给定输入字符串的所有组,返回匹配的数组数组。
语法
参数
haystack
— 输入字符串。 String。pattern
— 使用 re2 正则表达式语法 的正则表达式。必须包含组,每组用括号括起来。如果pattern
不包含组,则会引发异常。 String。
返回值
- 匹配的数组数组。 Array。
示例
结果:
extractAllGroupsVertical
使用 pattern
正则表达式匹配 haystack
字符串的所有组。返回一个数组的数组,其中每个数组包含来自每个组的匹配片段。片段按照在 haystack
中出现的顺序进行分组。
语法
参数
haystack
— 输入字符串。 String。pattern
— 使用 re2 正则表达式语法 的正则表达式。必须包含组,每组用括号括起来。如果pattern
不包含组,则会引发异常。 String。
返回值
- 匹配的数组数组。 Array。
如果 haystack
不匹配 pattern
正则表达式,则返回一个空数组。
示例
结果:
like
返回字符串 haystack
是否匹配 LIKE 表达式 pattern
。
LIKE 表达式可以包含普通字符和以下元符号:
%
表示任意数量的任意字符(包括零个字符)。_
表示单个任意字符。\
用于转义字面值%
、_
和\
。
匹配基于 UTF-8,例如 _
匹配 Unicode 代码点 ¥
,其在 UTF-8 中使用两个字节表示。
如果 haystack 或 LIKE 表达式不是有效的 UTF-8,则行为是未定义的。
没有自动 Unicode 标准化,您可以使用 normalizeUTF8*() 函数。
要与字面量的 %
、_
和 \
(这些是 LIKE 元字符)匹配,在前面加上反斜杠:\%
、\_
和 \\
。
如果反斜杠在后面带有与 %
、_
或 \
不同的字符,则其特殊含义将失效(即被逐字解释)。
请注意,ClickHouse 要求字符串中的反斜杠 也要被转义,因此您实际上需要写 \\%
、\\_
和 \\\\
。
对于形如 %needle%
的 LIKE 表达式,函数的速度与 position
函数一样快。
所有其他 LIKE 表达式在内部被转换为正则表达式,并以与函数 match
类似的性能执行。
语法
别名:haystack LIKE pattern
(运算符)
notLike
类似于 like
,但否定结果。
别名:haystack NOT LIKE pattern
(运算符)
ilike
类似于 like
,但执行不区分大小写搜索。
别名:haystack ILIKE pattern
(运算符)
notILike
类似于 ilike
,但否定结果。
别名:haystack NOT ILIKE pattern
(运算符)
ngramDistance
计算 haystack
字符串和 needle
字符串之间的 4-gram 距离。为此,它计算两个多重集之间的对称差,并按其基数之和进行标准化。返回一个在 0 和 1 之间的 Float32 值。结果越小,字符串之间的相似度越高。
函数 ngramDistanceCaseInsensitive
、ngramDistanceUTF8
、ngramDistanceCaseInsensitiveUTF8
提供不区分大小写和/或 UTF-8 的变体。
语法
参数
haystack
: 第一个比较字符串。 String literalneedle
: 第二个比较字符串。 String literal
返回值
- 在 0 和 1 之间的值,表示两个字符串之间的相似性。 Float32
实现细节
如果常量 needle
或 haystack
参数超过 32Kb 大小,则此函数将引发异常。如果任何非常量的 haystack
或 needle
参数超过 32Kb 大小,则距离总是 1。
示例
两个字符串越相似,结果越接近 0(完全相同)。
查询:
结果:
两个字符串之间的相似度越低,结果越大。
查询:
结果:
ngramDistanceCaseInsensitive
提供 ngramDistance 的不区分大小写变体。
语法
参数
haystack
: 第一个比较字符串。 String literalneedle
: 第二个比较字符串。 String literal
返回值
- 在 0 和 1 之间的值,表示两个字符串之间的相似性。 Float32
示例
使用 ngramDistance,大小写的差异会影响相似性值:
查询:
结果:
使用 ngramDistanceCaseInsensitive,大小写被忽视,因此两个仅在大小写上有差异的相同字符串现在将返回较低的相似性值:
查询:
结果:
ngramDistanceUTF8
提供 ngramDistance 的 UTF-8 变体。假定 needle
和 haystack
字符串是 UTF-8 编码的字符串。
语法
参数
haystack
: 第一个 UTF-8 编码的比较字符串。 String literalneedle
: 第二个 UTF-8 编码的比较字符串。 String literal
返回值
- 在 0 和 1 之间的值,表示两个字符串之间的相似性。 Float32
示例
查询:
结果:
ngramDistanceCaseInsensitiveUTF8
提供 ngramDistanceUTF8 的不区分大小写变体。
语法
参数
haystack
: 第一个 UTF-8 编码的比较字符串。 String literalneedle
: 第二个 UTF-8 编码的比较字符串。 String literal
返回值
- 在 0 和 1 之间的值,表示两个字符串之间的相似性。 Float32
示例
查询:
结果:
ngramSearch
类似于 ngramDistance
,但计算 needle
字符串和 haystack
字符串之间的非对称差,即 needle 的 n-grams 数量减去共同的 n-grams 数量,并按 needle n-grams 的数量进行标准化。返回一个在 0 和 1 之间的 Float32 值。结果越大,表明 needle
更可能存在于 haystack
中。此函数对于模糊字符串搜索非常有用。另请参见函数 soundex
。
函数 ngramSearchCaseInsensitive
、ngramSearchUTF8
、ngramSearchCaseInsensitiveUTF8
提供不区分大小写和/或 UTF-8 的变体。
语法
参数
haystack
: 第一个比较字符串。 String literalneedle
: 第二个比较字符串。 String literal
返回值
- 在 0 和 1 之间的值,表示
needle
存在于haystack
中的可能性。 Float32
实现细节
UTF-8 变体使用 3-gram 距离。这些不是完全公正的 n-gram 距离。我们使用 2 字节哈希对 n-gram 进行哈希,然后计算这些哈希表之间的(非)对称差 – 可能会发生冲突。在 UTF-8 不区分大小写格式中,我们不使用公正的 tolower
函数 – 我们将每个代码点字节的第 5 位(从零开始)和第零字节的第一位设为零(如果字节超过一个)– 这适用于拉丁字母和大多数西里尔字母。
示例
查询:
结果:
ngramSearchCaseInsensitive
提供了一种不区分大小写的 ngramSearch 变体。
语法
参数
返回值
- 介于 0 和 1 之间的值,表示
needle
存在于haystack
中的可能性。 Float32
结果越大,表示 needle
在 haystack
中的可能性越大。
示例
查询:
结果:
ngramSearchUTF8
提供了一种 UTF-8 变体的 ngramSearch,假设 needle
和 haystack
是 UTF-8 编码的字符串。
语法
参数
返回值
- 介于 0 和 1 之间的值,表示
needle
存在于haystack
中的可能性。 Float32
结果越大,表示 needle
在 haystack
中的可能性越大。
示例
查询:
结果:
ngramSearchCaseInsensitiveUTF8
提供了一种不区分大小写的 ngramSearchUTF8 变体。
语法
参数
返回值
- 介于 0 和 1 之间的值,表示
needle
存在于haystack
中的可能性。 Float32
结果越大,表示 needle
在 haystack
中的可能性越大。
示例
查询:
结果:
countSubstrings
返回子字符串 needle
在字符串 haystack
中出现的次数。
函数 countSubstringsCaseInsensitive
和 countSubstringsCaseInsensitiveUTF8
分别提供不区分大小写和不区分大小写 + UTF-8 的变体。
语法
参数
haystack
— 进行搜索的字符串。 字符串 或 枚举。needle
— 要搜索的子字符串。 字符串。start_pos
– 在haystack
中开始搜索的位置(1 基础)。 无符号整数。可选。
返回值
- 出现的次数。 无符号整数。
示例
结果:
带有 start_pos
参数的示例:
结果:
countSubstringsCaseInsensitive
返回子字符串 needle
在字符串 haystack
中出现的次数。忽略大小写。
语法
参数
haystack
— 进行搜索的字符串。 字符串 或 枚举。needle
— 要搜索的子字符串。 字符串。start_pos
– 在haystack
中开始搜索的位置(1 基础)。 无符号整数。可选。
返回值
- 出现的次数。 无符号整数。
示例
查询:
结果:
带有 start_pos
参数的示例:
查询:
结果:
countSubstringsCaseInsensitiveUTF8
返回子字符串 needle
在字符串 haystack
中出现的次数。忽略大小写并假设 haystack
是 UTF8 字符串。
语法
参数
haystack
— 进行搜索的 UTF-8 字符串。 字符串 或 枚举。needle
— 要搜索的子字符串。 字符串。start_pos
– 在haystack
中开始搜索的位置(1 基础)。 无符号整数。可选。
返回值
- 出现的次数。 无符号整数。
示例
查询:
结果:
带有 start_pos
参数的示例:
查询:
结果:
countMatches
返回在 haystack
中与 pattern
匹配的正则表达式的数量。
语法
参数
haystack
— 要搜索的字符串。 字符串。pattern
— 使用 re2 正则表达式语法 的正则表达式。 字符串。
返回值
- 匹配的数量。 无符号整数。
示例
结果:
结果:
countMatchesCaseInsensitive
返回在 haystack
中与模式匹配的正则表达式的数量,类似于 countMatches
,但匹配忽略大小写。
语法
参数
haystack
— 要搜索的字符串。 字符串。pattern
— 使用 re2 正则表达式语法 的正则表达式。 字符串。
返回值
- 匹配的数量。 无符号整数。
示例
查询:
结果:
regexpExtract
提取 haystack
中与正则表达式模式匹配且对应于正则组索引的第一个字符串。
语法
别名:REGEXP_EXTRACT(haystack, pattern[, index])
。
参数
haystack
— 要在其中与正则表达式模式匹配的字符串。 字符串。pattern
— 字符串,正则表达式,必须是常量。 字符串。index
– 大于或等于 0 的整数,默认值为 1。它表示要提取哪个正则组。 无符号整数或整数。可选。
返回值
pattern
可能包含多个正则组,index
指示要提取哪个正则组。索引为 0 意味着匹配整个正则表达式。 字符串。
示例
结果:
hasSubsequence
如果 needle
是 haystack
的子序列,则返回 1,否则返回 0。
字符串的子序列是通过删除零个或多个元素而不改变剩余元素的顺序从给定字符串衍生出的序列。
语法
参数
返回值
- 如果
needle
是haystack
的子序列,返回 1,否则返回 0。 UInt8。
示例
查询:
结果:
hasSubsequenceCaseInsensitive
与 hasSubsequence 相似,但进行不区分大小写的搜索。
语法
参数
返回值
- 如果
needle
是haystack
的子序列,返回 1,否则返回 0。 UInt8。
示例
查询:
结果:
hasSubsequenceUTF8
与 hasSubsequence 相似,但假设 haystack
和 needle
是 UTF-8 编码的字符串。
语法
参数
返回值
- 如果
needle
是haystack
的子序列,返回 1,否则返回 0。 UInt8。
查询:
示例
结果:
hasSubsequenceCaseInsensitiveUTF8
与 hasSubsequenceUTF8 相似,但进行不区分大小写的搜索。
语法
参数
返回值
- 如果
needle
是haystack
的子序列,返回 1,否则返回 0。 UInt8。
示例
查询:
结果:
hasToken
如果给定的令牌存在于 haystack
中,则返回 1,否则返回 0。
语法
参数
返回值
- 如果令牌存在于
haystack
中,返回 1,否则返回 0。 UInt8。
实现细节
令牌必须是常量字符串。由 tokenbf_v1 索引特化支持。
示例
查询:
hasTokenOrNull
如果给定的令牌存在,则返回 1,如果不存在则返回 0,如果令牌形式不正确则返回 null。
语法
参数
返回值
- 如果令牌存在于
haystack
中,返回 1;如果不存在,则返回 0;如果令牌形式不正确,则返回 null。
实现细节
令牌必须是常量字符串。由 tokenbf_v1 索引特化支持。
示例
如果 hasToken
因格式不正确的令牌而抛出错误,hasTokenOrNull
将针对格式不正确的令牌返回 null
。
查询:
hasTokenCaseInsensitive
如果给定的令牌存在于 haystack
中,则返回 1,否则返回 0。忽略大小写。
语法
参数
返回值
- 如果令牌存在于
haystack
中,返回 1,否则返回 0。 UInt8。
实现细节
令牌必须是常量字符串。由 tokenbf_v1 索引特化支持。
示例
查询:
hasTokenCaseInsensitiveOrNull
如果给定的令牌存在于 haystack
中,则返回 1,否则返回 0。忽略大小写并在令牌形式不正确时返回 null。
语法
参数
返回值
实现细节
令牌必须是常量字符串。由 tokenbf_v1 索引特化支持。
示例
如果 hasTokenCaseInsensitive
因格式不正确的令牌而抛出错误,hasTokenCaseInsensitiveOrNull
将针对格式不正确的令牌返回 null
。
查询: