概述
这里主要时对模糊查询进行一些稍微细粒度的说明,更细力度的可能就需要各位看官各自去查询了。模糊查询只要是使用数据库,做开发的基本上都会知道这个LIKE。但是今天要进行说明的是PGSQL的模糊查询,PGSQL在很多地方都进行了功能的扩展(我猜想主要是由于开源的功劳)。
PGSQL的模糊查询有LIKE,ILIKE,SIMILAR TO以及一些运算符。(LIKE我们常用的模糊查询;ILIKE不区分大小写的模糊查询;SIMILAR TO可以使用正则表达式的模糊查询)
LIKE
select *from sys_dict where dict_name LIKE '%ALIYUN%';
like的模糊查询,‘_’是一个字符占位符,‘%’是多字符占位符。这个的查询区分大小写。
select *from sys_dict where dict_name ~~ '%ALIYUN%';
‘~~’ 和 ‘LIKE’等效。
‘!~~’ 和 ‘NOT LIKE’ 等效。
ILIKE
select *from sys_dict where dict_name ilike '%ALIYUN%'
和LIKE一样的使用方式,但是这个查询不区分大小写。
select *from sys_dict where dict_name ~~* '%ALIYUN%';
‘~~*’ 和 ‘ILIKE’等效。
‘!~~*’ 和 ‘NOT ILIKE’ 等效。
SIMILAR TO
select *from sys_dict where dict_name SIMILAR TO '\S*ALIYUN\S*';
可以使用正则表达式查询。
select *from sys_dict where dict_name ~ '\S*ALIYUN\S*';
POSIX正则表达式的模式匹配操作符有以下几种:
(1)~ :匹配正则表达式,区分大小写。
(2)~* : 匹配正则表达式,不分大小写。
(3)!~:不匹配正则表达式,区分大小写。
(4)!~* :不匹配正则表达式,不分大小写。