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