你可能有所不知的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)文章
mysql 10w級(jí)別的mysql數(shù)據(jù)插入
幾天前做了一個(gè)短信發(fā)送東東,一次性要插入10w以上的手機(jī)號(hào)碼。我的個(gè)天啊。2011-08-08
MySQL將查詢結(jié)果用英文逗號(hào),連接的實(shí)現(xiàn)方式
這篇文章主要介紹了MySQL將查詢結(jié)果用英文逗號(hào),連接的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
MySQL的一級(jí)索引和二級(jí)索引的區(qū)別及說明
這篇文章主要介紹了MySQL的一級(jí)索引和二級(jí)索引的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07
Mysql命令行導(dǎo)出SQL文件和導(dǎo)入文件詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Mysql命令行導(dǎo)出SQL文件和導(dǎo)入文件的詳細(xì)步驟,在MySQL中,導(dǎo)入SQL文件是一個(gè)常見的操作,它可以幫助我們快速地恢復(fù)數(shù)據(jù)庫、遷移數(shù)據(jù)或者備份數(shù)據(jù),需要的朋友可以參考下2024-05-05
MySQL默認(rèn)值(DEFAULT)和非空約束(NOT NULL)的實(shí)現(xiàn)
本文主要介紹了MySQL默認(rèn)值(DEFAULT)和非空約束(NOT NULL)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
MySQL 數(shù)據(jù)庫兩臺(tái)主機(jī)同步實(shí)戰(zhàn)(linux)
MySQL支持單向、異步復(fù)制,復(fù)制過程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而一個(gè)或多個(gè)其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維護(hù)日志文件的一個(gè)索引以跟蹤日志循環(huán)。2009-04-04

