postgresql----LIKE和SIMILAR TO

LIKE和SIMILAR TO都支持模糊查询,另外SIMILAR TO还支持正则表达式查询。模糊查询中有两个重要的符号:下划线‘_‘匹配任意单个字符,百分号‘%‘匹配任意多个字符,可以是0个,如果想匹配‘_‘和‘%‘,必须在‘_‘和‘%‘前使用反斜线(\)逃逸。另外和LIKE相似的还有ILIKE,区别是LIKE区分大小写,而ILKIE不区分大小写。

示例表:

test=# drop table if exists tbl_insert;
DROP TABLE
test=# create table tbl_insert(a int,b int,c varchar(12));
CREATE TABLE
test=# insert into tbl_insert(a,b,c) values (1,1,‘11‘),(2,2,‘22‘),(3,3,‘33‘),(4,4,‘44‘),(5,5,‘51‘),(6,6,‘1‘),(6,6,‘61‘),(6,6,‘661‘),(7,7,‘3%1‘),(8,8,‘3%_1‘),(8,8,‘3_%_1‘),(7,7,‘abc‘),(7,7,‘ABc‘),(7,7,‘aBC‘);
INSERT 0 14

一.LIKE和ILIKE

1.查询字段c是以‘1‘结束,且‘1‘字符前有且只有一个字符的行。

test=# select * from tbl_insert where c like ‘_1‘;
 a | b | c
---+---+----
 1 | 1 | 11
 5 | 5 | 51
 6 | 6 | 61
(3 rows)

2.查询字段c以‘1‘结束的行

test=# select * from tbl_insert where c like ‘%1‘;
 a | b |   c
---+---+-------
 1 | 1 | 11
 5 | 5 | 51
 6 | 6 | 1
 6 | 6 | 61
 6 | 6 | 661
 7 | 7 | 3%1
 8 | 8 | 3%_1
 8 | 8 | 3_%_1
(8 rows)

3.查询字段c以1开头的行

test=# select * from tbl_insert where c like ‘1%‘;
 a | b | c
---+---+----
 1 | 1 | 11
 6 | 6 | 1
(2 rows)

4.查询字段c中包含字符‘1‘的行

test=# select * from tbl_insert where c like ‘%1%‘;
 a | b |   c
---+---+-------
 1 | 1 | 11
 5 | 5 | 51
 6 | 6 | 1
 6 | 6 | 61
 6 | 6 | 661
 7 | 7 | 3%1
 8 | 8 | 3%_1
 8 | 8 | 3_%_1
(8 rows)

5.查询字段c中包含下划线‘_‘的行

test=# select * from tbl_insert where c like ‘%\_%‘;
 a | b |   c
---+---+-------
 8 | 8 | 3%_1
 8 | 8 | 3_%_1
(2 rows)

6.查询字段c中包含百分号‘%‘的行

test=# select * from tbl_insert where c like ‘%\%%‘;
 a | b |   c
---+---+-------
 7 | 7 | 3%1
 8 | 8 | 3%_1
 8 | 8 | 3_%_1
(3 rows)

7.ILIKE查询字段c中包含字符‘b‘(不区分大小写)的行

test=# select * from tbl_insert where c ilike ‘%b%‘;
 a | b |  c
---+---+-----
 7 | 7 | abc
 7 | 7 | ABc
 7 | 7 | aBC
(3 rows)

二.SIMILAR TO

SIMILAR TO除下划线和百分号的使用与LIKE相同,还支持正则表达式查询。

|   表示选择(二选一,如a|b,类似or)

*   表示重复前面项0次或多次,如‘6*1‘,‘(66)*1‘

+   表示重复前面项1次或多次,如‘6+1‘,‘(66)+1‘

[]  表示方括号内字符集中的任意一个字符,如[123]表示1或2或3中的1个,可以是1,也可以是2,还可以是3,但是只能是单个字符。

1.|----查询c字段值是‘abc‘或‘ABc‘的行

test=# select * from tbl_insert where c similar to ‘(ab|AB)c‘;
 a | b |  c
---+---+-----
 7 | 7 | abc
 7 | 7 | ABc
(2 rows)

2.*----查询c字段中以‘1‘结尾,前面有0个或多个‘6‘的行

test=# select * from tbl_insert where c similar to ‘6*1‘;
 a | b |  c
---+---+-----
 6 | 6 | 1
 6 | 6 | 61
 6 | 6 | 661
(3 rows)

3.*----查询c字段中以‘1‘结尾,前面有0个或多个‘66‘的行

test=# select * from tbl_insert where c similar to ‘(66)*1‘;
 a | b |  c
---+---+-----
 6 | 6 | 1
 6 | 6 | 661
(2 rows)

4.+----查询c字段中以‘1‘结尾,前面至少有1个‘6‘的行

test=# select * from tbl_insert where c similar to ‘6+1‘;
 a | b |  c
---+---+-----
 6 | 6 | 61
 6 | 6 | 661
(2 rows)

5.+----查询c字段中以‘1‘结尾,前面至少有1个‘66‘的行

test=# select * from tbl_insert where c similar to ‘(66)+1‘;
 a | b |  c
---+---+-----
 6 | 6 | 661
(1 row)

6.[]----查询字段c中以‘1‘结尾,前面是0到9之间任意一个数字的行

test=# select * from tbl_insert where c similar to ‘[0-9]1‘;
 a | b | c
---+---+----
 1 | 1 | 11
 5 | 5 | 51
 6 | 6 | 61
(3 rows)

7.[]----查询字段c中以‘1‘结尾,前面是1或6中的行

test=# select * from tbl_insert where c similar to ‘[1,6]1‘;
 a | b | c
---+---+----
 1 | 1 | 11
 6 | 6 | 61
(2 rows)
时间: 2024-10-12 13:38:12

postgresql----LIKE和SIMILAR TO的相关文章

广州postgresql用户会技术交流会小记 2015-9-19

广州postgresql用户会技术交流会小记  2015-9-19 今天去了广州postgresql用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用postgresql -X2的情况 第二个讲师介绍了postgresql里面的一些执行计划分析 我个人比较关注第一个session,因为涉及到真正的应用案例 网上有对postgresql -X2的简短介绍,我先转载过来 转载:http://francs3.blog.163.com/blog/static/405767272

PostgreSQL学习手册(五) 函数和操作符

PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如

ubuntu 14.04安装postgresql最新版本

官网:https://www.postgresql.org/download/linux/ubuntu/ -------------------------------------------------------------------------------------------------------------------- 另一篇文章,讲的差不多也是这个: http://tecadmin.net/install-postgresql-server-on-ubuntu/# Postg

Understanding postgresql.conf : log*

After loooong pause, adding next (well, second) post to the “series“. This time, I'd like to describe how logging works. And I don't mean binary logging (WAL), but the log for us, humans, to read. Before I will go to the postgresql.conf options, let

PostgreSQL中initdb做了什么

在使用数据库前,是启动数据库,启动数据库前是initdb(初始化数据库):一起来看一下initdb做了什么吧. 初始化数据库的操作为: ./initdb -D /usr/local/pgsql/data initdb把用户指定的选项转换成对应的参数,通过外部程序调用的方式执行postgres程序.postgres程序在这种方式下将进入bootstrap模式创建数据集簇,并读取后端接口postgres.bki文件来创建模板数据库. /*-------------------------------

PostgreSQL语法结构

SQL 输入由一系列命令组成.一条命令由一系列记号构成,用一个分号(";")结尾.输入流的终止也结束一条命令.哪些记号是合法的取决于特定命令的语法. 记号可以是一个关键字.标识符.引号包围的标识符.文本(或常量).特殊的字符符号.记号通常由空白分隔(空格/tab/换行符),但如果不存在混淆的时候也可以不用(通常只是一个特殊字符与一些其它记号类型相连的时候). 另外,在 SQL输入里可以有注释.它们不是记号,它们实际上等效于空白. 比如,下列命令是(语法上)合法的 SQL 输入: SEL

YUM Installation PostgreSQL

PostgreSQL can be installed using RPMs (binary) or SRPMs (source) managed by YUM. This is available for the following Linux distributions (both 32- and 64-bit platforms; for the current release and prior release or two): Fedora Red Hat Enterprise Lin

PostgreSQL Hardware Performance Tuning

Bruce Momjian POSTGRESQL is an object-relational database developed on the Internet by a group of developers spread across the globe. It is an open-source alternative to commercial databases like Oracle and Informix. POSTGRESQL was originally develop

[转] PostgreSQL学习手册(函数和操作符)

一.逻辑操作符: 常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符: 下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如:    a BETWEEN x AND y 等效于 a &g

PostgreSQL源码安装文档

This document describes the installation of PostgreSQL using the source    code distribution. (If you are installing a pre-packaged distribution,    such as an RPM or Debian package, ignore this document and read the    packager's instructions instea