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%';
复制代码

查询结果:

iduseridusernamephonenumber
3u3TOM321

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

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

select * from public."user" where username ilike '%O%';
复制代码

查询结果:

iduseridusernamephonenumber
1u1tom123
2u2Tom123
3u3TOM321

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

select * from public."user" where username ~* 'O';
复制代码

查询结果:

iduseridusernamephonenumber
1u1tom123
2u2Tom123
3u3TOM321

PostgreSQL正则表达式

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

查询结果:

iduseridusernamephonenumber
1u1tom123
5u3jane654
7u3janey987

总结

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

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

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

参考链接

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值