欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

快速學會SQL中正則表達式REGEXP的使用技巧

admin
2024年2月7日 21:56 本文熱度 710

在 SQL 查詢語句中,REGEXP 是一個強大的正則表達式匹配運算符,用于在字符串中執(zhí)行復雜的模式匹配。通過 REGEXP,用戶可以定義自己的匹配模式,對數(shù)據(jù)進行精確或模糊的搜索,從而有效地處理各種復雜模式的字符串搜索需求。這為數(shù)據(jù)提取和處理提供了極大的便利。


正則表達式使用REGEXP命令進行匹配時,匹配成功,則返回結果為真(1),否則返回結果為假(0)。


由于LIKE跟REGEXP都是用于字符串模式匹配,這里為了節(jié)省空間,本篇文章將沿用之前LIKE篇章中所采用的測試數(shù)據(jù)作為演示。



 01. 

REGEXP的語法


在SQL查詢語句中,REGEXP的基本語法如下:

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 列名1 REGEXP '正則表達式匹配模式';

其中:

SELECT 列名1, 列名2, ...選擇要檢索的列。


FROM 表名指定要從中檢索數(shù)據(jù)的表。


WHERE 列名1 REGEXP '正則表達式匹配模式'這部分是查詢的條件,使用REGEXP運算符來過濾結果。只有滿足正則表達式匹配模式的行才會被返回。


正則表達式由特殊字符和元字符組成,用于定義搜索模式。以下是一些常見的正則表達式元字符。

  • ^:匹配字符串的開頭

  • $匹配字符的結尾

  • .匹配任意單個字符

  • |:跟or類似,表示或

  • *匹配前面的字符或子模式零次或多次

  • +匹配前面的字符或子模式1次或多次

  • ?匹配前面的字符或子模式零次或1次

  • []:匹配括號內(nèi)的任意一個字符

  • [^]:匹配不在括號內(nèi)的任意一個字符

  • [a-z]:匹配范圍內(nèi)的任意一個字符




 02. 

REGEXP的基本用法


在日常工作中,我們經(jīng)常使用REGEXP進行復雜的數(shù)據(jù)匹配和篩選,以下是關于REGEXP操作符的常見用法。


1. 搜索以特定字符或字符串開頭的值

倘若,我們想要查詢名字中以"古"字開頭的員工,可以使用以下SQL語句:

SELECT * FROM tb_employees WHERE name REGEXP '^古';

查詢結果如下:


2. 搜索以特定字符或字符串結尾的值

倘若,我們想要查詢名字中以"音"字結尾的員工,可以使用以下SQL語句:

SELECT * FROM tb_employees WHERE name REGEXP '音$';

查詢結果如下:


3. 搜索包含特定字符或字符串的值

倘若,我們想要查詢名字中包含"鳳"字,且年齡大于16的員工,可以使用以下SQL語句:

SELECT * FROM tb_employees WHERE name REGEXP '鳳' AND age > 16;

可以看到,要查詢名字中包含特定字(例如"鳳")的員工,當我們使用 REGEXP 時,不需加任何匹配規(guī)則,只需用單引號或雙引號來包圍字符即可,相當于LIKE '%%'注意,REGEXP 中沒有LIKE的%和_通配符


查詢結果如下:


那如果想要查詢名字中含有下劃線的員工,可以使用以下SQL語句。

SELECT * FROM tb_employees WHERE name REGEXP '_'

可以看到,使用REGEXP進行模式匹配,不需要像LIKE那樣要使用轉義符


查詢結果如下:


倘若,我們想要查詢名字中含有c,且c前面包含r或b的員工。可以使用以下SQL語句:

SELECT * FROM tb_employees WHERE name REGEXP '[br]c';

這個查詢會搜索name中包含 bc、rc 的記錄。若調(diào)整c的位置,c[br],則會搜索name中包含cb、cr的記錄。


這條語句的查詢結果如下:


想要查找名字中含有小寫字母的員工,可以使用以下SQL語句

SELECT * FROM tb_employees WHERE name REGEXP '^[a-z]';

默認情況下,REGEXP是不區(qū)分大小寫的查詢結果跟上圖一致,返回abc、abrc的記錄。


如果我們想找到所有名字中包含"古"或"音"的員工,可以使用以下SQL語句

-- 方法1
SELECT * FROM tb_employees WHERE name REGEXP '[古音]';

-- 方法2
SELECT * FROM tb_employees WHERE name REGEXP '古|音';

查詢結果如下:


4. 搜索包含特定長度的字符或字符串的值

倘若,我們想要查詢名字長度為2個字符的員工,可以使用以下SQL語句:

SELECT * FROM tb_employees WHERE name REGEXP '^.{2}$';

在這個語句中^ 表示字符串的開頭,$ 表示字符串的結尾,.{2} 表示匹配任意兩個字符,.表示任意字符,{2} 表示恰好匹配兩次


查詢結果同上圖結果一致,只返回古晉跟阿音2人。


通過上述示例,我們發(fā)現(xiàn)REGEXP與LIKE功能相似,但更為強大。它能夠?qū)崿F(xiàn)復雜且獨特的規(guī)則匹配。


🌟 注意:

1、在正則表達式中,使用括號()可以創(chuàng)建捕獲組,將括號內(nèi)的內(nèi)容作為一個整體進行匹配。例如,正則表達式(ABC)會匹配整個字符串"ABC"。


2、REGEXP默認采用部分匹配原則,即只要有一個匹配項,就會返回真。


3、盡管REGEXP的功能強大且靈活,在處理復雜模式匹配時也是不可或缺,但在處理大量數(shù)據(jù)時,其性能可能會受到影響。因此,在編寫復雜的正則表達式時,我們應注重優(yōu)化以提高查詢效率。在必要時,還需考慮采用其他方法,如數(shù)據(jù)預處理或索引,以進一步改善查詢性能。當然,對于簡單的查詢,使用LIKE操作符可能更為合適且高效。


關于SQL 中的正則表達式REGEXP,本次分享就到這了。希望這個系列能幫助大家更深入地理解和運用數(shù)據(jù)庫。


該文章在 2024/2/7 21:56:33 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved