你可能有所不知的MySQL正則表達(dá)式總結(jié)
一、 什么是正則表達(dá)式
正則表達(dá)式,又稱規(guī)則表達(dá)式,通常被用來檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。
說白了就是起到匹配結(jié)果集的作用,從結(jié)果集中查詢到符合開發(fā)者想要的數(shù)據(jù)。
MySQL中的正則表達(dá)式需要使用到的關(guān)鍵字是:REGEXP
話不多說,上才藝??!
對(duì)于MySQL使用正則表達(dá)式,很多猿友一開始會(huì)聯(lián)想到MySQL的模糊查詢
SELECT * FROM user WHERE user_name LIKE '%張三';
是的沒錯(cuò),模糊查詢的確能干正則所能干的事,但是,所能干的也只有兩個(gè)方面。
- % :匹配多個(gè)字符
- _ :匹配一個(gè)字符
正則所能進(jìn)行的匹配條件更多,重點(diǎn)來了!重點(diǎn)來了!重點(diǎn)來了!
二、正則表達(dá)式
1、^ :匹配輸入字符串的開始位置,也就是匹配的數(shù)據(jù)以指定的字符作為開頭。
SELECT product_name FROM product WHERE product_name REGEXP '^小米'; #匹配以“小米”開頭的數(shù)據(jù)
查詢結(jié)果
2、$ :匹配輸入字符串的結(jié)束位置,也就是匹配的數(shù)據(jù)以指定的字符進(jìn)行結(jié)尾。
SELECT product_name FROM product WHERE product_name REGEXP '小米$'; #匹配以“小米”結(jié)尾的數(shù)據(jù)
查詢結(jié)果
3、. :匹配除 “\n” 之外的任何單個(gè)字符。要匹配包括 ‘\n’ 在內(nèi)的任何字符,請(qǐng)使用像 ‘[.\n]’ 的模式。
SELECT product_name FROM product WHERE product_name REGEXP '.小米.'; #范圍[0,1],相當(dāng)于模糊查詢的 '_小米_'
查詢結(jié)果
4、[…] :字符集合。匹配所包含的任意一個(gè)字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
SELECT product_name FROM product WHERE product_name REGEXP '[小米]'; #匹配'小'或者'米'任意一個(gè)字符
查詢結(jié)果
5、[ ^ … ] :與 […] 相反
SELECT product_name FROM product WHERE product_name REGEXP '[^小米]'; #不匹配'小米‘
查詢結(jié)果
6、| :多種選擇匹配模式
SELECT product_name FROM product WHERE product_name REGEXP '小米|儀器'; #匹配的數(shù)據(jù)中存在'小米'或者'儀器'
查詢結(jié)果
7、* :匹配前面的子表達(dá)式出現(xiàn)0次或者多次,相當(dāng)于{0,N}
SELECT product_name FROM product WHERE product_name REGEXP '儀器*';
查詢結(jié)果
8、+ :匹配前面的子表達(dá)式出現(xiàn)1次或者多次,相當(dāng)于{1,N}
SELECT product_name FROM product WHERE product_name REGEXP '儀器+';
查詢結(jié)果
9、{n} : 設(shè)置數(shù)據(jù)進(jìn)行匹配的次數(shù)
SELECT product_name FROM product WHERE product_name REGEXP '小米{1}'; #匹配數(shù)據(jù)集中包含一個(gè)小米字段的數(shù)據(jù)
查詢結(jié)果
10、{n,m} :設(shè)置最小的匹配次數(shù)和最大的匹配次數(shù)
SELECT product_name FROM product WHERE product_name REGEXP '小米{1,4}'; #匹配的數(shù)據(jù)中至少有一個(gè)'小米'字段或者最多只有四個(gè)'小米'字段
查詢結(jié)果
三、總結(jié)
正則表達(dá)式在每一種編程語言中都存在,為數(shù)據(jù)的提供了高效的查找方式,也節(jié)約了開發(fā)者對(duì)數(shù)據(jù)的處理時(shí)間,但是正則使用不正確也會(huì)帶來難以發(fā)現(xiàn)的數(shù)據(jù)查詢錯(cuò)誤,所以好用、方便的前期是你得使用得正確。
到此這篇關(guān)于MySQL正則表達(dá)式總結(jié)的文章就介紹到這了,更多相關(guān)MySQL正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql5.5 master-slave(Replication)配置方法
mysql5.5 master-slave(Replication)配置方法,需要的朋友可以參考下。2011-08-08Mysql給普通分頁(yè)查詢結(jié)果加序號(hào)實(shí)操
這篇文章主要介紹了Mysql給普通分頁(yè)查詢結(jié)果加序號(hào)實(shí)操,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介
這篇文章主要介紹了MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03mysql+mybatis實(shí)現(xiàn)存儲(chǔ)過程+事務(wù)?+?多并發(fā)流水號(hào)獲取
這篇文章主要介紹了mysql+mybatis+存儲(chǔ)過程+事務(wù)?+?多并發(fā)流水號(hào)獲取,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12mysql-5.7.42升級(jí)到mysql-8.2.0(二進(jìn)制方式)
隨著數(shù)據(jù)量的增長(zhǎng)和業(yè)務(wù)需求的變更,我們可能需要升級(jí)MySQL,本文主要介紹了mysql-5.7.42升級(jí)到mysql-8.2.0(二進(jìn)制方式),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03