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

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

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

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

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

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

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

2. MySQL 中 REGEXP 的用法

  • 基礎(chǔ)語(yǔ)法: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)就是部分匹配(無(wú)需通配符)
轉(zhuǎn)義符依賴(lài)數(shù)據(jù)庫(kù)設(shè)置統(tǒng)一用\\轉(zhuǎn)義(如\\.匹配小數(shù)點(diǎn))

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

元字符作用MySQL 示例(匹配目標(biāo))
^匹配字符串開(kāi)頭'^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ū)分大小寫(xiě),若需區(qū)分,可使用REGEXP BINARY,例如'abc' REGEXP BINARY 'ABC'返回 0(不匹配)。

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

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

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

匹配手機(jī)號(hào)(以 1 開(kāi)頭,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ù)字的用戶(hù)名

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)需寫(xiě)\\.,否則.會(huì)被解釋為 “任意字符”。
  2. 性能問(wèn)題:REGEXP 匹配會(huì)全表掃描(無(wú)法使用索引),避免在大數(shù)據(jù)量表中用復(fù)雜正則,可先通過(guò) WHERE 條件縮小范圍。
  3. 版本差異:低版本 MySQL(如 5.7)不支持{n,m}、?等元字符,需用*+替代;MySQL 8.0 新增對(duì)正則捕獲組的支持(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. 先在測(cè)試庫(kù)用簡(jiǎn)單案例練習(xí)(如匹配數(shù)字、字母);
  3. 復(fù)雜場(chǎng)景分步驟拆解(如郵箱驗(yàn)證可拆分為 “用戶(hù)名 +@+ 域名 + 后綴”);
  4. 善用 MySQL 官方文檔(點(diǎn)擊查看)查詢(xún)版本特性。

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

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了mysql雙游標(biāo)嵌套循環(huán)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(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ì)工作日(周一至周五) 的訪問(wèn)量、訂單量或用戶(hù)活躍度,而剔除周末數(shù)據(jù),本文將從基礎(chǔ)方法到高級(jí)優(yōu)化,系統(tǒng)講解如何高效統(tǒng)計(jì)工作日數(shù)據(jù),并提供生產(chǎn)級(jí)建議,有需要的可以了解下
    2026-05-05
  • mysql存儲(chǔ)過(guò)程 在動(dòng)態(tài)SQL內(nèi)獲取返回值的方法詳解

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

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

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

    死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去.此時(shí)稱(chēng)系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等的進(jìn)程稱(chēng)為死鎖進(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),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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的語(yǔ)句

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

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

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

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

最新評(píng)論

静海县| 潞西市| 五河县| 伊吾县| 海盐县| 九江市| 莲花县| 海兴县| 广宁县| 买车| 合山市| 涿鹿县| 谷城县| 象州县| 遵义市| 营口市| 黄梅县| 泗阳县| 恭城| 湟中县| 敖汉旗| 林口县| 和林格尔县| 黄石市| 永康市| 海淀区| 东乌珠穆沁旗| 西平县| 洞口县| 应用必备| 临潭县| 景泰县| 进贤县| 三河市| 金乡县| 米泉市| 密山市| 仙居县| 石城县| 武穴市| 宜州市|