PostgreSQL Like查询与正则表达式

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: PostgreSQL Like查询与正则表达式

安装PostgreSQL之后,PostgreSQL会创建一个名为“postgres”的用户,创建一个名为“postgres”的数据库。我们就可以使用这个默认的库做实验。

首先建表并插入数据:

CREATE TABLE public.user(
    ID SERIAL PRIMARY KEY NOT NULL,
    UserID varchar(100) NOT NULL,
    UserName varchar(100) NOT NULL,
    PhoneNumber varchar(20) NOT NULL
);

INSERT INTO public."user" (userid, username, phonenumber) VALUES('u1', 'tom', '123');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u2', 'Tom', '123');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'TOM', '321');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'Jane', '456');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'jane', '654');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'Janey', '789');
INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'janey', '987');

使用普通的like查询

select * from public."user" where username like '%O%';

查询结果:

id userid username phonenumber
3 u3 TOM 321

使用like查询需要%号作为占位符,且PostgreSQL默认区分大小写。

使用不区分大小写的ilike查询

select * from public."user" where username ilike '%O%';

查询结果:

id userid username phonenumber
1 u1 tom 123
2 u2 Tom 123
3 u3 TOM 321

使用不需要占位符的~*查询

select * from public."user" where username ~* 'O';

查询结果:

id userid username phonenumber
1 u1 tom 123
2 u2 Tom 123
3 u3 TOM 321

PostgreSQL正则表达式

select * from public."user" where username SIMILAR TO '%(t|j)%';

查询结果:

id userid username phonenumber
1 u1 tom 123
5 u3 jane 654
7 u3 janey 987

总结

PostgreSQL的模糊匹配和模式查询非常强大,这里只是举了几个简单的小例子做了一下对比。更多的用法可以访问下面的参考链接了解。

如果感觉正则表达式还不能满足你的要求,可以尝试着写一个自定义函数。

另外,由于这些查询属于pgsql的方言,如果要考虑以后的数据库迁移成本的话,谨慎使用。

参考链接

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
消息中间件 存储 关系型数据库
PostgreSQL技术大讲堂 - 第33讲:并行查询管理
PostgreSQL从小白到专家,技术大讲堂 - 第33讲:并行查询管理
473 1
|
7月前
|
存储 关系型数据库 数据库
postgresql|数据库|提升查询性能的物化视图解析
postgresql|数据库|提升查询性能的物化视图解析
732 0
|
1月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
325 1
|
4月前
|
缓存 关系型数据库 数据库
PostgreSQL 查询性能
【8月更文挑战第5天】PostgreSQL 查询性能
87 8
|
4月前
|
SQL 关系型数据库 数据库
在 PostgreSQL 中使用 LIKE
【8月更文挑战第12天】
648 1
|
6月前
|
SQL 关系型数据库 数据库
Python执行PostgreSQL数据库查询语句,并打印查询结果
本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。
Python执行PostgreSQL数据库查询语句,并打印查询结果
|
5月前
|
Java 关系型数据库 API
使用Spring Boot和PostgreSQL构建高级查询
使用Spring Boot和PostgreSQL构建高级查询
|
6月前
|
SQL 关系型数据库 数据库
Python查询PostgreSQL数据库
木头左教你如何用Python连接PostgreSQL数据库:安装`psycopg2`库,建立连接,执行SQL脚本如创建表、插入数据,同时掌握错误处理和事务管理。别忘了性能优化,利用索引、批量操作提升效率。下期更精彩!💡 csvfile
Python查询PostgreSQL数据库
|
7月前
|
SQL 人工智能 Oracle
PostgreSQL 递归查询(含层级和结构)
PostgreSQL 递归查询(含层级和结构)
|
存储 NoSQL 关系型数据库
深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧
深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧
2195 0