安裝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 |
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的方言,若是要考慮之後的數據庫遷移成本的話,謹慎使用。操作系統