最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

用一句話解釋:正則表達(dá)式是一套用于描述字符串模式的規(guī)則,通過特殊符號(hào)(元字符)定義匹配邏輯,比如 “匹配以字母開頭、數(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
匹配方式僅支持%(任意字符)和_(單個(gè)字符)支持元字符(^、$、*等),功能更靈活
部分匹配需用%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”
.匹配任意單個(gè)字符(除換行)'a.c' → 匹配 “abc”“a1c”“a#c”
*匹配前一個(gè)字符 0 次或多次'ab*c' → 匹配 “ac”“abc”“abbbbc”
+匹配前一個(gè)字符 1 次或多次'ab+c' → 匹配 “abc”“abbbbc”(不匹配 “ac”)
?匹配前一個(gè)字符 0 次或 1 次'ab?c' → 匹配 “ac”“abc”(不匹配 “abbc”)
[ ]匹配括號(hào)內(nèi)任意單個(gè)字符'[0-9]' → 匹配任意數(shù)字;'[a-zA-Z]'匹配字母
[^ ]匹配不在括號(hào)內(nèi)的任意字符'[^0-9]' → 匹配非數(shù)字字符
{n}匹配前一個(gè)字符恰好 n 次'a{3}' → 匹配 “aaa”
{n,}匹配前一個(gè)字符至少 n 次'a{2,}' → 匹配 “aa”“aaa” 等
{n,m}匹配前一個(gè)字符 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ī)號(hào)(以 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)需寫\\.,否則.會(huì)被解釋為 “任意字符”。
  2. 性能問題:REGEXP 匹配會(huì)全表掃描(無法使用索引),避免在大數(shù)據(jù)量表中用復(fù)雜正則,可先通過 WHERE 條件縮小范圍。
  3. 版本差異:低版本 MySQL(如 5.7)不支持{n,m}、?等元字符,需用*+替代;MySQL 8.0 新增對正則捕獲組的支持(REGEXP_SUBSTR)。
  4. 部分匹配的 “陷阱”column REGEXP 'abc'會(huì)匹配 “abc”“xabc”“abcx”,若需精確匹配整個(gè)字符串,需加^$(如'^abc$')。

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

  • REGEXP_INSTR:返回匹配內(nèi)容在字符串中的位置,例如REGEXP_INSTR('abc123', '[0-9]')返回 4(第一個(gè)數(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)文章

  • 檢查并修復(fù)mysql數(shù)據(jù)庫表的具體方法

    檢查并修復(fù)mysql數(shù)據(jù)庫表的具體方法

    這篇文章介紹了檢查并修復(fù)mysql數(shù)據(jù)庫表的具體方法,有需要的朋友可以參考一下
    2013-09-09
  • MySQL查詢數(shù)據(jù)庫中某個(gè)庫、表、索引等所占空間的大小

    MySQL查詢數(shù)據(jù)庫中某個(gè)庫、表、索引等所占空間的大小

    MySQL是一個(gè)非常流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的查詢操作是非常強(qiáng)大和靈活的。查詢的效率不僅取決于表的大小,而且還取決于索引的大小,本文主要介紹了MySQL查詢數(shù)據(jù)庫中某個(gè)庫、表、索引等所占空間的大小,感興趣的可以了解一下
    2024-01-01
  • mysql雙游標(biāo)嵌套循環(huán)方式

    mysql雙游標(biāo)嵌套循環(huán)方式

    這篇文章主要介紹了mysql雙游標(biāo)嵌套循環(huán)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MySQL實(shí)現(xiàn)優(yōu)雅統(tǒng)計(jì)工作日(周一至周五)數(shù)據(jù)

    MySQL實(shí)現(xiàn)優(yōu)雅統(tǒng)計(jì)工作日(周一至周五)數(shù)據(jù)

    在實(shí)際業(yè)務(wù)中,我們常常需要統(tǒng)計(jì)工作日(周一至周五) 的訪問量、訂單量或用戶活躍度,而剔除周末數(shù)據(jù),本文將從基礎(chǔ)方法到高級(jí)優(yōu)化,系統(tǒng)講解如何高效統(tǒng)計(jì)工作日數(shù)據(jù),并提供生產(chǎn)級(jí)建議,有需要的可以了解下
    2026-05-05
  • mysql存儲(chǔ)過程 在動(dòng)態(tài)SQL內(nèi)獲取返回值的方法詳解

    mysql存儲(chǔ)過程 在動(dòng)態(tài)SQL內(nèi)獲取返回值的方法詳解

    本篇文章是對mysql存儲(chǔ)過程在動(dòng)態(tài)SQL內(nèi)獲取返回值進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MSSQL產(chǎn)生死鎖的根本原因及解決方法

    MSSQL產(chǎn)生死鎖的根本原因及解決方法

    死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去.此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等的進(jìn)程稱為死鎖進(jìn)程
    2016-04-04
  • mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實(shí)現(xiàn)

    mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實(shí)現(xiàn)

    本文主要介紹了mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • MySQL學(xué)習(xí)第四天 Windows 64位系統(tǒng)下使用MySQL

    MySQL學(xué)習(xí)第四天 Windows 64位系統(tǒng)下使用MySQL

    MySQL學(xué)習(xí)第四天教大家如何在Windows 64位下使用MySQL,即使用命令行方式完成操作MySQL服務(wù),感興趣的小伙伴們可以參考一下
    2016-05-05
  • mysql中將null值轉(zhuǎn)換為0的語句

    mysql中將null值轉(zhuǎn)換為0的語句

    mysql中將null值轉(zhuǎn)換為0的語句,在mysql數(shù)據(jù)庫開發(fā)中,如果后期添加了字段那么這些值為空值null,我們在使用者需要將null轉(zhuǎn)換為0方便后期的控制就需要下面的代碼了。
    2011-02-02
  • Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    這篇文章主要介紹了Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型,數(shù)據(jù)庫索引是?mysql?數(shù)據(jù)庫中重要的組成部分,是數(shù)據(jù)庫查詢數(shù)據(jù)速度提升的關(guān)鍵,本文將介紹數(shù)據(jù)庫索引的一些內(nèi)容,下文更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05

最新評論

页游| 高清| 泗洪县| 于田县| 石景山区| 夹江县| 壤塘县| 临朐县| 紫金县| 鲜城| 务川| 林芝县| 华池县| 临漳县| 永城市| 西峡县| 绥芬河市| 长丰县| 邯郸县| 自贡市| 和林格尔县| 明星| 莎车县| 怀宁县| 二手房| 吉林省| 平度市| 南宁市| 青州市| 织金县| 峨边| 乐山市| 柏乡县| 芒康县| 怀远县| 铁力市| 南川市| 孙吴县| 积石山| 高安市| 宁强县|