腾讯云数据仓库 TCHouse-P 模式匹配

这篇说说腾讯云数据库三种模式匹配方式:LIKE、SIMILAR TO和POSIX正则表达式,并给出各语法的示例与结果。 LIKE:支持%和_通配符进行简单模式匹配。 SIMILAR TO:支持|、*、+等更丰富的匹配语法。 POSIX正则:提供substring、regexp_replace等函数实现复杂字符串处理。

相关产品
腾讯云数据仓库 TCHouse-P 产品页,含版本规格、价格与购买入口。

一、LIKE

数据库支持多种模式匹配方式。第一种就是 LIKE 或者 NOT LIKE。

示例 结果
‘abc’ LIKE ‘abc’ true
‘abc’ LIKE ‘abcz’ false
‘abc’ LIKE ‘a%’ true
‘abc’ LIKE ‘_a_’ false
‘abc’ LIKE ‘a_’ false
‘abc’ LIKE ‘a’ false

二、SIMILAR TO

第二种模式匹配是数据库支持的 SIMILAR TO,使用方式和 LIKE 相似,不过支持更多的匹配语法,具体见下表格。

语法 描述 示例 结果
| 支持可选的匹配 'abc' SIMILAR TO '%(b|d|c|e)%' True
* 前一个元素0或者多次重复 'abc' SIMILAR TO 'abcd*' True
'abc' SIMILAR TO 'abc*' true – –
'abc' SIMILAR TO 'ab*' false – –
+ 前一个元素1次或者多次重复 'abc' SIMILAR TO 'abc+' True
'abc' SIMILAR TO 'abcc+' false – –

三、POSIX 正则表达式

数据库还支持 POSIX 正则表达式,它提供了比 LIKE 和 SIMILAR TO 操作符更强大的函数。POSIX 正则表达式支持的函数如下表格。

函数 功能 示例 结果
substring(string from pattern) 从 string 中按照正则 pattern 截取字符串 substring('foobar' from 'o.b') oob
regexp_replace(source, pattern, replacement [, flags ]) 替换 source 中匹配的字符串 regexp_replace('foobarbaz', 'b..', 'X') fooXX
regexp_matches(string, pattern [, flags ]) 函数返回一个文本数组,该数组由匹配一个 POSIX 正则表达式模式得到的所有被捕获子串构成 regexp_matches('foobarbequebaz', '(bar)(beque)'); {bar,beque}
regexp_split_to_table(string, pattern [, flags ]) 函数把一个 POSIX 正则表达式模式当作一个定界符来分离一个串 SELECT regexp_split_to_table('the quick brown fox jumped', E'\\\\s+') ; the quick brown fox jumped
regexp_split_to_array(string, pattern [, flags ]) 和 regexp_split_to_table 类似,是一个正则表达式分离函数,不过它的结果以一个 text 数组的形式返回 SELECT regexp_split_to_array('the quick brown fox jumped', E'\\\\s+'); {the,quick,brown,fox,jumped}
赞 (0)
上一篇 4天前
下一篇 4天前