
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*';
select * from table_name where name ~ '^AB+';
1.3.4.匹配多个字符中的一个
select * from table_name where name ~ '[AB]';
1.3.5.匹配非指定字符
select * from table_name where name !~ '[A-C1-6]';
1.3.6.匹配指定次数
select * from table_name where name ~ 'AB{2,7}';
2. LIKE
2.1.使用规则
符号 |
说明 |
% |
匹配任何零个或多个 |
_ |
单个匹配符 |
LIKE |
区分大小写的匹配 |
ILIKE |
匹配, 不区分大小写 |
NOT LIKE |
不匹配, 区分大小写 |
NOT ILIKE |
不匹配, 不区分大小写 |
说明:
使用反斜杠进行转义%, 如:\\%
来匹配字符中的%
.
也可以不使用反斜杠作为转义, 自定义转义符号, 如:
select * from table_name where name like 'ab#%%' escape '#';
2.2.实例
select * from table_name where name like 'a%c';
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%';
select * from table_name where name similar to '%(321|abc)%';
select * from table_name where name similar to '%(abc|efg)';