PostgreSQL(三) 模式匹配(正则和LIKE)

1.POSIX正则

1.1.使用规则

符号 说明
~ 匹配正则, 区分大小写
~* 匹配正则, 不区分大小写
!~ 不匹配正则, 区分大小写
!~* 不匹配正则, 不区分大小写

1.2.字符匹配列表

符号 说明
^ 以特定字符或字符串开头
. 匹配任何单个字符
* 匹配0个和多个字符串
+ 匹配前面的字符1次和多次
<字符串> 匹配包含知道的字符串和文本
[字符串list] 匹配字符集合中的任何一个字符
[^] 匹配不在括号中的任何符号
字符串{n,} 匹配前面的字符串至少n次
字符串{n,m} 匹配前面的字符串至少n次,至多m次

1.3.实例

1.3.1.查询以字符或字符串开头的记录

select * from table_name where name ~ '^A';

1.3.2.查询任意字符

select * from table_name where name ~ 'A.C';

1.3.3.匹配多个字符

select * from table_name where name ~ '^AB*';//以A开头,后面任意位置出现B多次或者0次
select * from table_name where name ~ '^AB+';//A开头,字母B至少出现一次

1.3.4.匹配多个字符中的一个

select * from table_name where name ~ '[AB]';

1.3.5.匹配非指定字符

select * from table_name where name !~ '[A-C1-6]';//匹配包含A到C和1到6的字符

1.3.6.匹配指定次数

select * from table_name where name ~ 'AB{2,7}';//AB出现2次到7次

2. LIKE

2.1.使用规则

符号 说明
% 匹配任何零个或多个
_ 单个匹配符
LIKE 区分大小写的匹配
ILIKE 匹配, 不区分大小写
NOT LIKE 不匹配, 区分大小写
NOT ILIKE 不匹配, 不区分大小写

说明:
使用反斜杠进行转义%, 如:\%来匹配字符中的%.
也可以不使用反斜杠作为转义, 自定义转义符号, 如:

select * from table_name where name like 'ab#%%' escape '#';// 能够匹配如: ab%ccd

2.2.实例

select * from table_name where name like 'a%c'; // abc, aghjklc

3. SIMILAR TO 正则表达式

3.1.使用规则

符号 说明
% 匹配任何零个或多个
_ 单个匹配符
| 表示选择两个候选项之一,两个字符匹配其中之一就可以。类似“或”。
* 表示重复前面的指定的项0次或多次。
+ 表示重复前面的指定项1次或多次。
? 表示重复前面的指定项0次或1次。
{m} 表示重复前面的项m次。
{m,} 表示重复前面的项m次或更多次。
{m,n} 表示重复前面的项至少m次,不超过n次。
() 可以作为项目分组到一个独立的逻辑项中。
[…] 声明一个字符类,就像POSIX正则表达式。

3.2.实例

select * from table_name where name similar to 'AB%';// ABC
select * from table_name where name similar to '%(321|abc)%';// 321ABC, abc345
select * from table_name where name similar to '%(abc|efg)';//123abc, 321efg

你可能感兴趣的:(postgresql,数据库,LIKE,SIMILAR,TO)