PostgreSQL Like查詢與正則表達式

安裝PostgreSQL之后,PostgreSQL會創(chuàng)建一個名為“postgres”的用戶,創(chuàng)建一個名為“postgres”的數(shù)據(jù)庫。我們就可以使用這個默認的庫做實驗。

首先建表并插入數(shù)據(jù):

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%';

查詢結(jié)果:

id userid username phonenumber
3 u3 TOM 321

使用like查詢需要%號作為占位符,且PostgreSQL默認區(qū)分大小寫。

使用不區(qū)分大小寫的ilike查詢

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

查詢結(jié)果:

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

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

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

查詢結(jié)果:

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)%';

查詢結(jié)果:

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

總結(jié)

PostgreSQL的模糊匹配和模式查詢非常強大,這里只是舉了幾個簡單的小例子做了一下對比。更多的用法可以訪問下面的參考鏈接了解。

如果感覺正則表達式還不能滿足你的要求,可以嘗試著寫一個自定義函數(shù)。

另外,由于這些查詢屬于pgsql的方言,如果要考慮以后的數(shù)據(jù)庫遷移成本的話,謹慎使用。

參考鏈接

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容