狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

admin
2024年3月28日 22:54 本文熱度 653

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


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


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



 01. 

REGEXP的語法


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

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

其中:

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


FROM 表名指定要從中檢索數據的表。


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


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

  • ^:匹配字符串的開頭

  • $匹配字符的結尾

  • .匹配任意單個字符

  • |:跟or類似,表示或

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

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

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

  • []:匹配括號內的任意一個字符

  • [^]:匹配不在括號內的任意一個字符

  • [a-z]:匹配范圍內的任意一個字符




 02. 

REGEXP的基本用法


在日常工作中,我們經常使用REGEXP進行復雜的數據匹配和篩選,以下是關于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 時,不需加任何匹配規則,只需用單引號或雙引號來包圍字符即可,相當于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 的記錄。若調整c的位置,c[br],則會搜索name中包含cb、cr的記錄。


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


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

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

默認情況下,REGEXP是不區分大小寫的查詢結果跟上圖一致,返回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人。


通過上述示例,我們發現REGEXP與LIKE功能相似,但更為強大。它能夠實現復雜且獨特的規則匹配。


🌟 注意:

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


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


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


關于SQL 中的正則表達式REGEXP,本次分享就到這了。


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