博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL Like查询与正则表达式
阅读量:6852 次
发布时间:2019-06-26

本文共 1680 字,大约阅读时间需要 5 分钟。

安装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的方言,如果要考虑以后的数据库迁移成本的话,谨慎使用。

参考链接

转载于:https://juejin.im/post/5cbb260bf265da03a54c1a18

你可能感兴趣的文章
VS~单步调试DLL
查看>>
MyEclipse环境下Hibernate入门实例
查看>>
VC+CSocket文件传送示例
查看>>
职业生涯中的选择时机非常重要,各种条件还没成熟时的时候,因为诱惑而贸然行事,只会得到适得其反的结果...
查看>>
[WebDevelopment]搜索引擎优化(SEO)工具包
查看>>
Symbian OS开发入门(二) :VS2003环境下Symbian工程的导入与建立
查看>>
RequiredFieldValidator 根据group组来触发验证
查看>>
[AR]ImageTarget(图像识别)
查看>>
[C++] socket -9[匿名管道]
查看>>
移动端网络优化
查看>>
测试并发应用(二)监控Phaser类
查看>>
云上游戏数据分析实践
查看>>
前端如何实现数据双向绑定
查看>>
视频码率那些事
查看>>
Android仿网易云音乐:留声机效果
查看>>
vue-cli项目升级webpack4踩坑
查看>>
Python爬虫框架,内置微博、自如、豆瓣图书、拉勾、拼多多等规则
查看>>
android View 的绘制流程
查看>>
怎么实现mybatis半自动化解耦!看看资深程序员怎么说
查看>>
一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
查看>>