欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL中REGEXP的實(shí)現(xiàn)示例

 更新時間:2025年08月26日 08:48:41   作者:nice_lcj520  
本文主要介紹了MYSQL中REGEXP的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

MySQL 的 REGEXP 函數(shù)是處理復(fù)雜字符串匹配的 “瑞士軍刀”,掌握它能大幅提升數(shù)據(jù)篩選效率。

一、基礎(chǔ)掃盲:先搞懂 “是什么”

1. 什么是正則表達(dá)式?

用一句話解釋:正則表達(dá)式是一套用于描述字符串模式的規(guī)則,通過特殊符號(元字符)定義匹配邏輯,比如 “匹配以字母開頭、數(shù)字結(jié)尾的字符串”。

2. MySQL 中 REGEXP 的用法

  • 基礎(chǔ)語法:column REGEXP 'pattern'(返回 1 表示匹配,0 表示不匹配)。
  • 舉例:SELECT * FROM users WHERE email REGEXP '@gmail\\.com$';(匹配 gmail 郵箱,注意.需要轉(zhuǎn)義)。
  • 與 LIKE 的核心區(qū)別:
特性LIKEREGEXP
匹配方式僅支持%(任意字符)和_(單個字符)支持元字符(^、$、*等),功能更靈活
部分匹配需用%pattern%實(shí)現(xiàn)默認(rèn)就是部分匹配(無需通配符)
轉(zhuǎn)義符依賴數(shù)據(jù)庫設(shè)置統(tǒng)一用\\轉(zhuǎn)義(如\\.匹配小數(shù)點(diǎn))

三、核心語法:元字符與示例(重中之重)

元字符作用MySQL 示例(匹配目標(biāo))
^匹配字符串開頭'^abc' → 匹配 “abc123”“abcdef”
$匹配字符串結(jié)尾'xyz$' → 匹配 “123xyz”“xxyz”
.匹配任意單個字符(除換行)'a.c' → 匹配 “abc”“a1c”“a#c”
*匹配前一個字符 0 次或多次'ab*c' → 匹配 “ac”“abc”“abbbbc”
+匹配前一個字符 1 次或多次'ab+c' → 匹配 “abc”“abbbbc”(不匹配 “ac”)
?匹配前一個字符 0 次或 1 次'ab?c' → 匹配 “ac”“abc”(不匹配 “abbc”)
[ ]匹配括號內(nèi)任意單個字符'[0-9]' → 匹配任意數(shù)字;'[a-zA-Z]'匹配字母
[^ ]匹配不在括號內(nèi)的任意字符'[^0-9]' → 匹配非數(shù)字字符
{n}匹配前一個字符恰好 n 次'a{3}' → 匹配 “aaa”
{n,}匹配前一個字符至少 n 次'a{2,}' → 匹配 “aa”“aaa” 等
{n,m}匹配前一個字符 n 到 m 次'a{1,3}' → 匹配 “a”“aa”“aaa”

注意:MySQL 的 REGEXP 默認(rèn)不區(qū)分大小寫,若需區(qū)分,可使用REGEXP BINARY,例如'abc' REGEXP BINARY 'ABC'返回 0(不匹配)。

四、實(shí)戰(zhàn)案例:用 REGEXP 解決實(shí)際問題

這部分是博客的 “靈魂”,結(jié)合具體場景展示用法,讀者可直接復(fù)用:

1. 驗(yàn)證格式合法性

匹配手機(jī)號(以 1 開頭,11 位數(shù)字):

SELECT * FROM user WHERE phone REGEXP '^1[3-9][0-9]{9}$';

匹配郵箱(含 @和域名后綴):

SELECT * FROM user WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';

2. 篩選包含特定模式的字符串

提取包含數(shù)字的用戶名

SELECT username FROM user WHERE username REGEXP '[0-9]';

排除包含特殊字符(如!、@)的記錄

SELECT * FROM user WHERE username NOT REGEXP '[!@#$%]';

3. 替換或清洗數(shù)據(jù)(結(jié)合 REGEXP_REPLACE)

MySQL 8.0 及以上支持REGEXP_REPLACE,例如清除字符串中的所有空格:

SELECT REGEXP_REPLACE(address, ' ', '') AS clean_address FROM user;

五、避坑指南:這些 “坑” 別踩

  1. 轉(zhuǎn)義符的坑:MySQL 中需用\\轉(zhuǎn)義(而非標(biāo)準(zhǔn)正則的\),例如匹配小數(shù)點(diǎn)需寫\\.,否則.會被解釋為 “任意字符”。
  2. 性能問題:REGEXP 匹配會全表掃描(無法使用索引),避免在大數(shù)據(jù)量表中用復(fù)雜正則,可先通過 WHERE 條件縮小范圍。
  3. 版本差異:低版本 MySQL(如 5.7)不支持{n,m}?等元字符,需用*+替代;MySQL 8.0 新增對正則捕獲組的支持(REGEXP_SUBSTR)。
  4. 部分匹配的 “陷阱”column REGEXP 'abc'會匹配 “abc”“xabc”“abcx”,若需精確匹配整個字符串,需加^$(如'^abc$')。

六、進(jìn)階:REGEXP 與其他函數(shù)結(jié)合

  • REGEXP_INSTR:返回匹配內(nèi)容在字符串中的位置,例如REGEXP_INSTR('abc123', '[0-9]')返回 4(第一個數(shù)字的位置)。
  • REGEXP_SUBSTR:提取匹配的子串,例如REGEXP_SUBSTR('電話:13800138000', '[0-9]{11}')返回 “13800138000”。

七、總結(jié):REGEXP 學(xué)習(xí)路徑

  1. 記住常用元字符(^$.*[]是基礎(chǔ));
  2. 先在測試庫用簡單案例練習(xí)(如匹配數(shù)字、字母);
  3. 復(fù)雜場景分步驟拆解(如郵箱驗(yàn)證可拆分為 “用戶名 +@+ 域名 + 后綴”);
  4. 善用 MySQL 官方文檔(點(diǎn)擊查看)查詢版本特性。

一句話收尾:REGEXP 是 MySQL 字符串處理的 “進(jìn)階技能”,看似復(fù)雜,實(shí)則掌握規(guī)律后能大幅提升效率 —— 從今天開始,告別繁瑣的 LIKE 嵌套吧!

到此這篇關(guān)于MYSQL中REGEXP的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MYSQL REGEXP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux搭建單機(jī)MySQL8.0.26版本的操作方法

    Linux搭建單機(jī)MySQL8.0.26版本的操作方法

    這篇文章主要介紹了Linux搭建單機(jī)MySQL8.0.26版本的操作方法,本文通過圖文并茂的形式給大家講解的非常詳細(xì),感興趣的朋友一起看看吧
    2025-05-05
  • MySQL深度分頁(千萬級數(shù)據(jù)量如何快速分頁)

    MySQL深度分頁(千萬級數(shù)據(jù)量如何快速分頁)

    后端開發(fā)中經(jīng)常需要分頁展示,個時候就需要用到MySQL的LIMIT關(guān)鍵字。LIMIT在數(shù)據(jù)量大的時候極可能造成的一個問題就是深度分頁。本文就介紹一下解決方法,感興趣的可以了解一下
    2021-07-07
  • MySQL中MTR的概念

    MySQL中MTR的概念

    這篇文章主要介紹了MySQL中MTR的概念,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • MySQL數(shù)據(jù)庫innodb啟動失敗無法重啟的解決方法

    MySQL數(shù)據(jù)庫innodb啟動失敗無法重啟的解決方法

    這篇文章給大家分享了MySQL數(shù)據(jù)庫innodb啟動失敗無法重啟的解決方法,通過總結(jié)自己遇到的問題分享給大家,讓遇到同樣問題的朋友們可以盡快解決,下面來一起看看吧。
    2016-09-09
  • MySQL系列關(guān)于NUll值的經(jīng)驗(yàn)總結(jié)分析教程

    MySQL系列關(guān)于NUll值的經(jīng)驗(yàn)總結(jié)分析教程

    這篇文章主要為大家介紹了MySQL系列關(guān)于NUll值的一些經(jīng)驗(yàn)總結(jié)分析,關(guān)于null值的影響作用以及為什么會出現(xiàn)null值的原因等等問題的解析
    2021-10-10
  • MySQL存儲過程的優(yōu)化實(shí)例

    MySQL存儲過程的優(yōu)化實(shí)例

    在編寫MySQL存儲過程的過程中,我們會時不時地需要對某些存儲過程進(jìn)行優(yōu)化,其目的是確保代碼的可讀性、正確性及運(yùn)行性能。本文以作者實(shí)際工作為背景,介紹了對某一個MySQL存儲過程優(yōu)化的整個過程。
    2016-07-07
  • MySQL全文檢索的實(shí)現(xiàn)示例

    MySQL全文檢索的實(shí)現(xiàn)示例

    全文搜索是一種在文本字段中查找關(guān)鍵詞的功能。在MySQL中,我們可以使用全文搜索來提高查詢的效率,本文主要介紹了MySQL全文檢索的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    這篇文章主要介紹了使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法,需要的朋友可以參考下
    2015-09-09
  • MySql索引原理和SQL優(yōu)化方式

    MySql索引原理和SQL優(yōu)化方式

    索引是提升數(shù)據(jù)庫查詢效率的有序存儲結(jié)構(gòu),包括主鍵索引、唯一索引、普通索引等,約束則用于數(shù)據(jù)完整性,包含主鍵、唯一、外鍵等約束,B+樹是常用的索引結(jié)構(gòu),減少磁盤IO次數(shù),索引應(yīng)用場景包括where、groupby、orderby
    2024-09-09
  • MySQL詳解如何優(yōu)化查詢條件

    MySQL詳解如何優(yōu)化查詢條件

    我們知道從MySQL表中使用SELECT語句來查詢數(shù)據(jù),如需有條件地從表中選取數(shù)據(jù),可將WHERE子句添加到SELECT語句中,本篇我們來看看怎樣優(yōu)化查詢條件
    2022-05-05

最新評論