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
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值