不区分大小写的搜索遵循英语的大小写转换规则。例如,英语中的小写
i 的大写形式是
I,而土耳其语中则是 İ——对于英语以外的语言,结果可能不符合预期。haystack) 和搜索字符串 (本节中称为 needle) 都是单字节编码文本。如果这一假设
不成立,不会抛出异常,结果未定义。对 UTF-8 编码字符串的搜索通常由单独的函数
变体提供。同样,如果使用 UTF-8 函数变体,而输入字符串并非 UTF-8 编码文本,也不会抛出异常,且
结果未定义。请注意,不会自动执行 Unicode 规范化,不过你可以使用
normalizeUTF8*() 函数来实现这一点。
通用字符串函数 和 字符串替换函数 将单独介绍。
以下文档由
system.functions 系统表生成。countMatches
与版本相关的行为此函数的行为取决于 ClickHouse 版本:
- 在 < v25.6 的版本中,即使模式能够匹配空字符串,函数也会在第一次空匹配时停止计数。
- 在 >= 25.6 的版本中,发生空匹配时,函数会继续执行。可使用设置
count_matches_stop_at_empty_match = true恢复旧版行为;
UInt64
示例
统计数字串的数量
Query
Response
countMatchesCaseInsensitive
countMatches 类似,但执行不区分大小写的匹配。
语法
haystack— 要在其中搜索的字符串。Stringpattern— 正则表达式模式。const String
UInt64
示例
不区分大小写的计数
Query
Response
countSubstrings
needle 在字符串 haystack 中出现的频次。
语法
haystack— 要在其中执行搜索的 String。String 或 枚举。 -needle— 要搜索的子串。String。 -start_pos— 在haystack中开始搜索的位置 (从 1 开始计数) 。UInt。可选。
UInt64
示例
使用示例
Query
Response
Query
Response
countSubstringsCaseInsensitive
countSubstrings 类似,但按不区分大小写的方式计数。
语法
haystack— 执行搜索的字符串。String或枚举needle— 要搜索的子串。Stringstart_pos— 可选。在haystack中开始搜索的位置 (从 1 开始计数) 。UInt*
needle 在 haystack 中出现的次数。UInt64
示例
使用示例
Query
Response
Query
Response
countSubstringsCaseInsensitiveUTF8
countSubstrings 类似,但以不区分大小写的方式进行计数,并假定 haystack 为 UTF-8 字符串。
Syntax
haystack— 执行搜索的 UTF-8 字符串。String或枚举needle— 要搜索的子串。Stringstart_pos— 可选。在haystack中开始搜索的位置 (从 1 开始) 。UInt*
needle 在 haystack 中出现的次数。UInt64
示例
使用示例
Query
Response
Query
Response
extract
haystack— 要从中提取内容的 String。Stringpattern— 正则表达式,通常包含一个捕获组。const String
String
示例
从电子邮件地址中提取域名
Query
Response
Query
Response
extractAll
extract 类似,但返回字符串中匹配正则表达式的所有结果组成的数组。
如果 ‘haystack’ 不匹配 ‘pattern’ 正则表达式,则返回空数组。
如果正则表达式包含捕获组 (子模式) ,则该函数会针对第一个捕获组匹配输入字符串。
语法
haystack— 要从中提取片段的 String。Stringpattern— 正则表达式,可包含捕获组。const String
Array(String)
示例
提取所有数字
Query
Response
Query
Response
extractAllGroupsHorizontal
s— 要从中提取内容的输入字符串。String或FixedStringregexp— 用于匹配的正则表达式。const String或const FixedString
Array(Array(String))
示例
用法示例
Query
Response
extractGroups
extractAllGroupsHorizontal 或 extractAllGroupsVertical。
Syntax
s— 要从中提取内容的输入字符串。String或FixedStringregexp— 正则表达式。必须至少包含一个捕获组。常量。const String或const FixedString
1 到 N,其中 N 为 regexp 中捕获组的数量) 。如果没有匹配,则返回空数组。Array(String)
示例
使用示例
Query
Response
hasAllTokens
hasAnyTokens 类似,但仅当 needle 字符串或数组中的所有标记都与 input 字符串匹配时返回 1,否则返回 0。如果 input 是一列,则返回满足此条件的所有行。
为获得最佳性能,列
input 应定义一个文本索引。
如果未定义文本索引,该函数会对该列执行穷举列扫描,其速度比索引查找慢几个数量级。input参数 (始终如此) 以及needle参数 (如果为 String) 会使用为文本索引指定的分词器进行处理。 如果该列未定义文本索引,则会改用splitByNonAlpha分词器。 如果needle参数的类型为 Array(String),则数组中的每个元素都会被视为一个标记——不会再进行额外的分词。
当文本索引定义了一个预处理器 (例如
lowerUTF8) 时,hasAllTokens 会将其应用于 input;如果 needles 是 String,则也会在标记化之前将其应用于 needles。当 needles 是 Array(String) 时,其元素会按原样传递,不会对其应用预处理器。
预处理器仅在文本索引路径上生效,因此,使用文本索引的查询与不使用文本索引的查询,结果可能会有所不同 (例如 SETTINGS use_skip_indexes = 0) 。
为提高全文检索的易用性,这种不一致是可以接受的。hasAllToken
参数
input— 输入列。String、FixedString、Array(String)或Array(FixedString)needles— 待搜索的标记。String或Array(String)tokenizer— 使用的分词器。有效参数包括splitByNonAlpha、splitByString、asciiCJK、ngrams、sparseGrams和array。可选;如果未显式设置,默认为splitByNonAlpha。const String
UInt8
示例
使用字符串 needle 的基本用法
Query
Response
Query
Response
tokens 函数生成 needle
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasAnyTokens
needle 字符串或数组中至少有一个标记与 input 字符串匹配,则返回 1,否则返回 0。如果 input 是一列,则返回满足此条件的所有行。
列
input 应定义 文本索引,以获得最佳性能。
如果未定义文本索引,该函数会对列执行穷举列扫描,其速度比索引查找慢几个数量级。input参数 (始终如此) ,以及needle参数 (如果其类型为 String) 会使用为文本索引指定的分词器进行分词。 如果该列未定义文本索引,则会改用splitByNonAlpha分词器。 如果needle参数的类型为 Array(String),则会将数组中的每个元素视为一个标记——不会再进行额外分词。
当文本索引定义了预处理器 (例如
lowerUTF8) 时,hasAnyTokens 会在分词前将其应用于 input;当 needles 为 String 时,也会将其应用于 needles。当 needles 为 Array(String) 时,其元素会按原样传递,不会对其应用预处理器。
预处理器仅在文本索引路径上应用,因此,使用文本索引的查询与不使用文本索引的查询之间的结果可能不同 (例如 SETTINGS use_skip_indexes = 0) 。
为了提高全文检索的易用性,可以容忍这种不一致性。hasAnyToken
参数
input— 输入列。String或FixedString或Nullable(String)或Nullable(FixedString)或Array(String)或Array(FixedString)或Array(Nullable(String))或Array(Nullable(FixedString))needles— 待搜索的标记。String或Array(String)tokenizer— 使用的分词器。有效参数包括splitByNonAlpha、splitByString、asciiCJK、ngrams、sparseGrams和array。该参数为可选项;如果未显式设置,则默认为splitByNonAlpha。const String
1,否则返回 0。UInt8
示例
使用字符串 needle 的基本示例
Query
Response
Query
Response
tokens 函数生成 needle
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasPhrase
input 是否按连续顺序包含 phrase 中的所有标记。
为获得最佳性能,列
input 应定义 文本索引。
如果未定义 文本索引,该函数会执行穷举列扫描,其速度比索引查找慢几个数量级。input 和 phrase 参数进行分词。
如果该列未定义 文本索引,则改用 splitByNonAlpha 分词器——除非通过可选的第三个参数提供了分词器。
tokenizer 参数必须是 splitByNonAlpha、splitByString、ngrams 或 asciiCJK 之一。
当 文本索引 定义了 预处理器 (例如
lowerUTF8) 时,hasPhrase 会在分词前将其应用于 input 和 phrase。
预处理器 仅在 文本索引 路径上生效,因此,使用 文本索引 的查询与不使用 文本索引 的查询,结果可能不同 (例如 SETTINGS use_skip_indexes = 0) 。
为了提高 全文检索 的易用性,可以容忍这种不一致。hasToken、hasAnyTokens 和 hasAllTokens 不同,hasPhrase 要求这些标记按相同顺序连续出现,
中间不能有任何其他标记。例如,hasPhrase('the quick brown fox', 'quick fox') 返回 0,
因为 “brown” 出现在 “quick” 和 “fox” 之间。
语法
matchPhrase
参数
input— 输入列。String或FixedStringphrase— 要搜索的短语。const Stringtokenizer— 使用的分词器。可选,默认为splitByNonAlpha。const String
1;否则返回 0。UInt8
示例
短语匹配
Query
Response
Query
Response
hasSubsequence
1,否则返回 0。UInt8
示例
基本的子序列检查
Query
Response
Query
Response
hasSubsequenceCaseInsensitive
hasSubsequence 类似,但搜索时不区分大小写。
语法
UInt8
示例
使用示例
Query
Response
hasSubsequenceCaseInsensitiveUTF8
hasSubsequenceUTF8 类似,但搜索时不区分大小写。
语法
needle 是 haystack 的子序列,则返回 1;否则返回 0。UInt8
示例
使用示例
Query
Response
hasSubsequenceUTF8
hasSubsequence 类似,但假设 haystack 和 needle 是以 UTF-8 编码的字符串。
语法
needle 是 haystack 的子序列,则返回 1;否则返回 0。UInt8
示例
用法示例
Query
Response
Query
Response
hasToken
[0-9A-Za-z_] (数字、ASCII 字符和下划线) 构成的最长子序列。
语法
haystack— 被搜索的字符串。Stringtoken— 要查找的标记。const String
1;否则返回 0。UInt8
示例
标记搜索
Query
Response
hasTokenCaseInsensitive
- 无。
hasTokenCaseInsensitiveOrNull
- 无。
hasTokenOrNull
hasToken 类似,但如果标记格式不合法,则返回 NULL。
语法
haystack— 要搜索的字符串。必须为常量。Stringtoken— 要搜索的标记。const String
1;否则返回 0。如果 token 格式不正确,则返回 NULL。Nullable(UInt8)
示例
使用示例
Query
Response
highlight
haystack— 要搜索的文本。String或FixedStringneedles— 要高亮显示的搜索词数组。const Array(String)open_tag— 在每个匹配项前插入的起始标签。默认值:<em>。const Stringclose_tag— 在每个匹配项后插入的结束标签。默认值:</em>。const String
String
示例
基本高亮
Query
Response
Query
Response
ilike
like 类似,但以不区分大小写的方式进行搜索。支持可选的 ESCAPE 子句 (参见 like) 。
语法
haystack— 执行搜索的字符串。String或FixedStringpattern— 用于匹配的 LIKE 模式。Stringescape_character— 可选的单字符字符串,用作转义字符以替代\。默认值:\。String
1,否则返回 0。UInt8
示例
使用示例
Query
Response
like
haystack 是否匹配 LIKE 表达式 pattern。
LIKE 表达式可以包含普通字符以及以下元符号:
%表示任意数量的任意字符 (包括零个字符) 。_表示任意单个字符。\用于转义字面量%、_和\。
_ 可以匹配 Unicode 码点 ¥,该字符在 UTF-8 中用两个字节表示。
如果 haystack 或 LIKE 表达式不是有效的 UTF-8,则其行为未定义。
不会自动执行 Unicode 规范化;你可以使用 normalizeUTF8* 函数来完成此操作。
要匹配字面量 %、_ 和 \ (它们是 LIKE 元字符) ,请在它们前面加上反斜杠:\%、\_ 和 \\。
如果反斜杠后面的字符不是 %、_ 或 \,则反斜杠会失去其特殊含义 (即按字面量解释) 。
ClickHouse 要求字符串中的反斜杠也需要转义,因此实际需要写成
\\%、\\_ 和 \\\\。%needle% 的 LIKE 表达式,该函数的速度与 position 函数一样快。
所有其他 LIKE 表达式在内部都会转换为正则表达式,并以与 match 函数相近的性能执行。
ESCAPE 子句
ESCAPE 子句用于指定自定义转义字符 (必须是单个 ASCII 字符) 。
提供后,自定义转义字符会替代默认的反斜杠,用于转义 % 和 _ 元字符。
转义字符可以转义三种内容:% (字面量百分号) 、_ (字面量下划线) 以及其自身 (字面量转义字符) 。
使用自定义转义字符时,反斜杠不再具有特殊含义,而是按字面量字符处理。
语法
haystack— 要在其中执行搜索的 String。String或FixedStringpattern— 要匹配的LIKE模式。可包含%(匹配任意数量的字符) 、_(匹配单个字符) 以及用于转义的\。Stringescape_character— 可选的单字符字符串,用作\的替代转义字符。默认值:\。String
LIKE 模式匹配,则返回 1;否则返回 0。UInt8
示例
用法示例
Query
Response
Query
Response
Query
Response
Query
Response
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恢复之前的行为。
needle— 要搜索的子串。Stringhaystack— 要在其中进行搜索的字符串。String或Enumstart_pos— 可选。在haystack中开始搜索的位置 (从 1 开始计数) 。UInt
0。UInt64
示例
基本用法
Query
Response
match
¥ 在内部占用两个字节,但在匹配时会被视为单个码点。
正则表达式 不能包含 NULL 字节。
如果 haystack 或 模式 不是有效的 UTF-8,则其行为未定义。
与 re2 的默认行为不同,. 会匹配换行符。要禁用此行为,请在 模式 前添加 (?-s)。
模式 不会自动加上锚点。若要匹配整个字符串,请自行使用 ^ 和 $ 对 模式 加锚。
如果你只是想搜索子字符串,可以改用函数 like 或 position,它们的速度比此函数快得多。
可选的运算符语法:haystack REGEXP pattern。
语法
REGEXP_MATCHES
参数
返回值
如果匹配该模式,则返回 1,否则返回 0。UInt8
示例
基本模式匹配
Query
Response
Query
Response
Query
Response
multiFuzzyMatchAllIndices
multiFuzzyMatchAny 类似,但会返回在固定编辑距离内与 haystack 匹配的所有索引组成的数组,顺序不限。
语法
haystack— 执行搜索的 String。Stringdistance— 模糊匹配允许的最大编辑距离。UInt8pattern— 要匹配的模式数组。Array(String)
Array(UInt64)
示例
使用示例
Query
Response
multiFuzzyMatchAny
multiMatchAny 类似,但如果任意模式在固定的编辑距离内匹配 haystack,则返回 1。
此函数依赖 hyperscan 库的 Experimental 功能,在某些边缘情况下可能较慢。
其性能取决于编辑距离的取值和所使用的模式,但与非模糊变体相比,开销始终更高。
由于 hyperscan 的限制,
multiFuzzyMatch*() 函数家族不支持 UTF-8 正则表达式 (会将其视为字节序列) 。haystack— 执行搜索的 String。Stringdistance— fuzzy matching 的最大编辑距离。UInt8pattern— 可选。用于匹配的模式数组。Array(String)
1;否则返回 0。UInt8
示例
使用示例
Query
Response
multiFuzzyMatchAnyIndex
multiFuzzyMatchAny 类似,但会返回在固定编辑距离内与 haystack 匹配的任意一个索引。
语法
haystack— 执行搜索的字符串。Stringdistance— 模糊匹配允许的最大编辑距离。UInt8pattern— 用于匹配的模式数组。Array(String)
0。UInt64
示例
使用示例
Query
Response
multiMatchAllIndices
multiMatchAny 类似,但返回按任意顺序与 haystack 匹配的所有索引组成的数组。
语法
Array(UInt64)
示例
使用示例
Query
Response
multiMatchAny
multiSearchAny——它的速度比此函数快得多。
语法
haystack— 在其中搜索模式的 String。Stringpattern1[, pattern2, ...]— 包含一个或多个正则表达式模式的数组。Array(String)
1,否则返回 0。UInt8
示例
多个模式匹配
Query
Response
Query
Response
multiMatchAnyIndex
multiMatchAny 类似,但会返回任意一个与 haystack 匹配的索引。
语法
haystack— 执行搜索的字符串。Stringpattern— 用于匹配的正则表达式。Array(String)
UInt64
示例
使用示例
Query
Response
multiSearchAllPositions
position 类似,但它返回一个位置数组,表示 haystack 字符串中多个 needle 子字符串的位置 (以字节为单位,从 1 开始计数) 。
所有 multiSearch*() 函数最多仅支持 2^8 个 needle。
Syntax
haystack— 执行搜索的字符串。Stringneedle1[, needle2, ...]— 由一个或多个待搜索子字符串组成的数组。Array(String)
0。Array(UInt64)
示例
多个 needle 搜索
Query
Response
multiSearchAllPositionsCaseInsensitive
multiSearchAllPositions 类似,但不区分大小写。
语法
haystack— 要在其中执行搜索的 String。Stringneedle1[, needle2, ...]— 由一个或多个待搜索子字符串组成的数组。Array(String)
0。Array(UInt64)
示例
不区分大小写的多重搜索
Query
Response
multiSearchAllPositionsCaseInsensitiveUTF8
multiSearchAllPositionsUTF8 类似,但不区分大小写。
语法
haystack— 执行搜索的 UTF-8 编码字符串。Stringneedle— 要搜索的 UTF-8 编码子字符串。Array(String)
Array
示例
不区分大小写的 UTF-8 搜索
Query
Response
multiSearchAllPositionsUTF8
multiSearchAllPositions 类似,但假定 haystack 和 needle 子串均为 UTF-8 编码的字符串。
语法
haystack— 要在其中执行搜索的 UTF-8 编码字符串。Stringneedle1[, needle2, ...]— 要搜索的 UTF-8 编码子字符串数组。Array(String)
0。Array
示例
UTF-8 多重搜索
Query
Response
multiSearchAny
multiSearchAnyCaseInsensitive、multiSearchAnyUTF8 和 multiSearchAnyCaseInsensitiveUTF8 提供了此函数的不区分大小写和/或 UTF-8 变体。
语法
haystack— 在其中执行搜索的 String。Stringneedle1[, needle2, ...]— 要查找的子字符串数组。Array(String)
1;否则返回 0。UInt8
示例
任意匹配查找
Query
Response
multiSearchAnyCaseInsensitive
haystack— 在其中执行搜索的 String。Stringneedle— 要搜索的子字符串。Array(String)
1;否则返回 0。UInt8
示例
不区分大小写的搜索
Query
Response
multiSearchAnyCaseInsensitiveUTF8
haystack— 在其中执行搜索的 UTF-8 字符串。Stringneedle— 待搜索的 UTF-8 子字符串。Array(String)
1;否则返回 0。UInt8
示例
给定 UTF-8 字符串 ‘Здравствуйте’,检查是否包含字符 ‘з’ (小写)
Query
Response
multiSearchAnyUTF8
haystack 和 needle 子串都是 UTF-8 编码的字符串。
语法
haystack— 执行搜索的 UTF-8 字符串。Stringneedle— 要搜索的 UTF-8 子字符串。Array(String)
1;否则返回 0。UInt8
示例
给定 UTF-8 字符串 ‘你好,世界’ (‘Hello, world’) ,检查该字符串中是否包含字符 你 或 界
Query
Response
multiSearchFirstIndex
haystack— 要在其中搜索的字符串。Stringneedles— 要查找的字符串数组。Array(String)
UInt64
示例
用法示例
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexCaseInsensitive
haystack 中最左侧匹配到的 needle_i 的索引 i (从 1 开始) ,否则返回 0。
不区分大小写。
语法
haystack— 执行搜索的 String。Stringneedle— 要搜索的子字符串。Array(String)
0。UInt8
示例
使用示例
Query
Response
multiSearchFirstIndexCaseInsensitiveUTF8
haystack— 要搜索的字符串。Stringneedles— 要查找的字符串数组。Array(String)
UInt64
示例
用法示例
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexUTF8
haystack 中最靠左匹配到的 needle_i 的索引 i (从 1 开始) ,否则返回 0。
假定 haystack 和 needle 是采用 UTF-8 编码的字符串。
语法
haystack— 在其中进行搜索的 UTF-8 字符串。Stringneedle— 要搜索的 UTF-8 子字符串数组。Array(String)
needle 的索引 (从 1 开始计数) 。如果没有匹配,则返回 0。UInt8
示例
使用示例
Query
Response
multiSearchFirstPosition
position 类似,但返回 haystack 字符串中与多个 needle 字符串里任意一个匹配的最左偏移量。
函数 multiSearchFirstPositionCaseInsensitive、multiSearchFirstPositionUTF8 和 multiSearchFirstPositionCaseInsensitiveUTF8 提供了此函数的不区分大小写和/或 UTF-8 变体。
语法
haystack— 执行搜索的 String。Stringneedle1[, needle2, ...]— 由一个或多个待搜索子字符串组成的数组。Array(String)
haystack 字符串中与多个 needle 字符串中的任意一个匹配的最左侧偏移量;如果没有匹配,则返回 0。UInt64
示例
搜索首个位置
Query
Response
multiSearchFirstPositionCaseInsensitive
haystack— 执行搜索的字符串。Stringneedle— 要搜索的子字符串数组。Array(String)
haystack 字符串中与多个 needle 字符串中的任意一个匹配的最左侧偏移量。如果没有匹配,则返回 0。UInt64
示例
大小写不敏感的第一个位置
Query
Response
multiSearchFirstPositionCaseInsensitiveUTF8
haystack 和 needle 均为 UTF-8 字符串,且不区分大小写。
语法
haystack— 执行搜索的 UTF-8 字符串。Stringneedle— 要搜索的 UTF-8 子字符串数组。Array(String)
haystack 字符串中与多个 needle 字符串中的任意一个匹配的最左侧偏移量,忽略大小写。如果没有匹配,则返回 0。UInt64
示例
查找 UTF-8 字符串 ‘Здравствуй, мир’ (‘Hello, world’) 中与给定 needle 中任意一个匹配的最左侧偏移量
Query
Response
multiSearchFirstPositionUTF8
haystack 和 needle 都是 UTF-8 字符串。
语法
haystack— 执行搜索的 UTF-8 字符串。Stringneedle— 要搜索的 UTF-8 子字符串数组。Array(String)
haystack 字符串中与多个 needle 字符串中任意一个匹配的最左侧偏移量。如果没有匹配,则返回 0。UInt64
示例
查找 UTF-8 字符串 ‘Здравствуй, мир’ (‘Hello, world’) 中与给定任意一个 needle 匹配的最左侧偏移量
Query
Response
ngramDistance
ngramDistanceCaseInsensitive、ngramDistanceUTF8、ngramDistanceCaseInsensitiveUTF8。
语法
0 和 1 之间的 Float32 数值。返回值越小,字符串越相似。Float32
示例
计算 4-gram 距离
Query
Response
ngramDistanceCaseInsensitive
ngramDistance 的不区分大小写变体。
计算两个字符串之间的 4-gram 距离,忽略大小写。
返回值越小,字符串越相似。
语法
0 和 1 之间的 Float32 数值。Float32
示例
不区分大小写的 4-gram 距离
Query
Response
ngramDistanceCaseInsensitiveUTF8
ngramDistance 的不区分大小写 UTF-8 变体。
假定 needle 和 haystack 字符串均为 UTF-8 编码,并忽略大小写。
计算两个 UTF-8 字符串之间不区分大小写的 3-gram 距离。
返回值越小,字符串越相似。
语法
0 和 1 之间的 Float32 数值。Float32
示例
不区分大小写的 UTF-8 3-gram 距离
Query
Response
ngramDistanceUTF8
ngramDistance 的 UTF-8 版本。
假定 needle 和 haystack 字符串均为 UTF-8 编码。
计算两个 UTF-8 字符串之间的 3-gram 距离。
返回值越小,字符串越相似。
语法
0 到 1 之间的 Float32 数值。Float32
示例
UTF-8 3-gram 距离
Query
Response
ngramSearch
ngramSearchCaseInsensitive、ngramSearchUTF8、ngramSearchCaseInsensitiveUTF8。
语法
1.0) ,则返回 1;否则返回 0。UInt8
示例
使用 4-gram 进行搜索
Query
Response
ngramSearchCaseInsensitive
ngramSearch 的不区分大小写版本。
计算 needle 字符串与 haystack 字符串之间的非对称差,即用 needle 中的 n-gram 数量减去共有的 n-gram 数量,再按 needle 的 n-gram 数量进行归一化。
检查两个字符串之间的 4-gram 距离是否小于或等于给定的阈值,并忽略大小写。
语法
1.0) ,则返回 1;否则返回 0。UInt8
示例
使用 4-gram 的不区分大小写搜索
Query
Response
ngramSearchCaseInsensitiveUTF8
ngramSearch 的不区分大小写 UTF-8 变体。
假定 haystack 和 needle 为 UTF-8 字符串,并且不区分大小写。
检查两个 UTF-8 字符串之间的 3-gram 距离是否小于或等于给定阈值,且不区分大小写。
语法
1.0) ,则返回 1;否则返回 0。UInt8
示例
使用 3-gram 的不区分大小写 UTF-8 搜索
Query
Response
ngramSearchUTF8
ngramSearch 的 UTF-8 版本。
假定 haystack 和 needle 为 UTF-8 字符串。
检查两个 UTF-8 字符串之间的 3-gram distance 是否小于或等于给定阈值。
语法
1.0) ,则返回 1;否则返回 0。UInt8
示例
使用 3-gram 进行 UTF-8 搜索
Query
Response
notILike
% 和 _。支持可选的 ESCAPE 子句 (参见 like) 。
语法
haystack— 待搜索的输入字符串。String或FixedStringpattern— 要匹配的 SQL LIKE 模式。%匹配任意数量的字符 (包括零个) ,_恰好匹配一个字符。Stringescape_character— 可选的单字符字符串,用作转义字符来替代\。默认值:\。String
1,否则返回 0。UInt8
示例
用法示例
Query
Response
notLike
like 类似,但会返回相反的结果。支持可选的 ESCAPE 子句 (参见 like) 。
Syntax
haystack— 要在其中执行搜索的字符串。String或FixedStringpattern— 用于匹配的 LIKE 模式。Stringescape_character— 可选的单字符字符串,用作转义字符,以替代\。默认值:\。String
LIKE 模式不匹配,则返回 1;否则返回 0。UInt8
示例
使用示例
Query
Response
Query
Response
position
needle 在字符串 haystack 中的位置 (以字节为单位,从 1 开始计数) 。
如果子串 needle 为空,则适用以下规则:
- 如果未指定
start_pos:返回1 - 如果
start_pos = 0:返回1 - 如果
start_pos >= 1且start_pos <= length(haystack) + 1:返回start_pos - 否则:返回
0
locate、positionCaseInsensitive、positionUTF8 和 positionCaseInsensitiveUTF8。
语法
haystack— 执行搜索的字符串。String或枚举needle— 要搜索的子串。Stringstart_pos—haystack中开始搜索的位置 (从 1 开始计数) 。可选。UInt
0。UInt64
示例
基本用法
Query
Response
Query
Response
Query
Response
Query
Response
positionCaseInsensitive
position 类似,但不区分大小写。
语法
instr
参数
haystack— 执行搜索的字符串。String或枚举needle— 要搜索的子串。Stringstart_pos— 可选。haystack中开始搜索的位置 (从 1 开始计数) 。UInt*
0。UInt64
示例
不区分大小写的搜索
Query
Response
positionCaseInsensitiveUTF8
positionUTF8 类似,但按不区分大小写的方式搜索。
语法
haystack— 执行搜索的字符串。String或枚举needle— 要搜索的子串。Stringstart_pos— 可选。haystack中开始搜索的位置 (从 1 开始) 。UInt*
0。UInt64
示例
不区分大小写的 UTF-8 搜索
Query
Response
positionUTF8
position 类似,但假定 haystack 和 needle 为 UTF-8 编码的字符串。
语法
haystack— 执行搜索的字符串。String或枚举needle— 要搜索的子串。Stringstart_pos— 可选。haystack中开始搜索的位置 (从 1 开始计数) 。UInt*
0。UInt64
示例
按 UTF-8 字符计数
Query
Response