说明:
适用版本:TCHouse-X 内核版本 2.0.0及以上版本。
like
语法
like(string, pattern[, escape]) -> boolean功能说明
评估字符串是否与给定的模式(Pattern)匹配。模式可以包含普通字符和通配符。
%:匹配 0 个、1 个或多个字符。
_:匹配单个字符。
escape:可选,指定一个 ASCII 字符用于转义通配符。
匹配规则:区分大小写。
性能说明
缓存机制:每个执行线程最多允许编译 100 个正则表达式。
优化策略:简单模式如
hello、hello%、%hello%、_hello_ 等将直接评估,不计入正则编译限制。只有复杂模式才会触发正则编译。示例
SELECT like('abc', '%b%'); -- trueSELECT like('a_c', '%#_%', '#'); -- true (使用 # 转义 _)
rlike
语法
rlike(string, pattern) -> boolean功能说明
基于正则表达式模式进行匹配。
包含匹配:与
like 不同,rlike 只需模式包含在字符串内即可返回 true(无需匹配整个字符串)。锚定:若需完全匹配,请使用
^ 和 $ 锚定符。限制:
pattern 必须为常量字符串,不支持列引用。示例
SELECT rlike('1a 2b 14m', '\\d+b'); -- true
regexp_extract
语法
regexp_extract(string, pattern) -> varcharregexp_extract(string, pattern, group) -> varchar功能说明
在字符串中查找正则表达式的第一次出现。
无 group 参数:返回第一个完整匹配的子串。带 group 参数:返回指定捕获组(Capture Group)编号的内容。限制:
pattern 必须为常量字符串,不支持列引用。示例
SELECT regexp_extract('1a 2b 14m', '\\d+'); -- '1'SELECT regexp_extract('1a 2b 14m', '(\\d+)([a-z]+)', 2); -- 'a'
regexp_replace
语法
regexp_replace(string, pattern, overwrite) -> varcharregexp_replace(string, pattern, overwrite, position) -> varchar功能说明
将字符串中匹配正则表达式的部分替换为
overwrite 字符串。替换逻辑
支持捕获组引用:使用
$g 或 ${g} 引用编号组,使用 ${name} 引用命名组。转义符:使用
\\$ 表示原义美元符号。若 \\ 后紧跟非数字或非反斜杠字符,则忽略该 \\。参数说明
string:源字符串。pattern:正则表达式。overwrite:替换后的内容。position:可选,起始搜索位置(从 1 开始)。若 position 大于字符串长度,返回原字符串;小于 1 则抛出异常。限制说明
编译限制:单次函数调用中唯一正则表达式的编译上限为 20 个,超过将抛出异常。
示例
-- 基础替换SELECT regexp_replace('Hello, World!', 'l', 'L'); -- 'HeLLo, WorLd!'-- 捕获组替换SELECT regexp_replace('300-300', '(\\\\d+)-(\\\\d+)', '400'); -- '400'-- 指定起始位置SELECT regexp_replace('Hello, World!', 'l', 'L', 6); -- 'Hello, WorLd!' (从位置6开始替换)SELECT regexp_replace('Hello, World!', 'l', 'L', 5); -- 'Hello, World!' (o之后没有l,不匹配)