PostgreSQL Like查询与正则表达式

安装PostgreSQL以后,PostgreSQL会建立一个名为“postgres”的用户,建立一个名为“postgres”的数据库。咱们就能够使用这个默认的库作实验。html

首先建表并插入数据:正则表达式

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

查询结果:sql

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

查询结果:post

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的模糊匹配和模式查询很是强大,这里只是举了几个简单的小例子作了一下对比。更多的用法能够访问下面的参考连接了解。ui

若是感受正则表达式还不能知足你的要求,能够尝试着写一个自定义函数。spa

另外,因为这些查询属于pgsql的方言,若是要考虑之后的数据库迁移成本的话,谨慎使用。操作系统

参考连接

相关文章
相关标签/搜索