有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

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}