MySQL數(shù)據(jù)庫操作DQL正則表達式
前言:
正則表達式(regular expression)描述了一種字符串匹配的規(guī)則,正則表達式本身就是一個字符串,使用這個字符串來描述、用來定義匹配規(guī)則,匹配一系列符合某個句法規(guī)則的字符串。在開發(fā)中,正則表達式通常被用來檢索、替換那些符合某個規(guī)則的文本。
MySQL通過REGEXP關(guān)鍵字支持正則表達式進行字符串匹配。
-- ^ 在字符串開始處進行匹配 SELECT 'abc' REGEXP '^a'; -- 1 -- $ 在字符串末尾開始匹配 SELECT 'abc' REGEXP 'a$'; -- 0 SELECT 'abc' REGEXP 'c$'; -- 1 -- . 匹配任意字符 SELECT 'abc' REGEXP '.b'; -- 1 SELECT 'abc' REGEXP '.c'; -- 1 SELECT 'abc' REGEXP 'a.'; -- 1 -- [...] 匹配括號內(nèi)的任意單個字符 SELECT 'abc' REGEXP '[xyz]'; -- 0 SELECT 'abc' REGEXP '[xaz]'; -- 1
返回值為1就代表匹配到了,如果返回值為0就代表不能匹配
-- [^...] 注意^符合只有在[]內(nèi)才是取反的意思,在別的地方都是表示開始處匹配 SELECT 'a' REGEXP '[^abc]';-- 0 SELECT 'x' REGEXP '[^abc]';-- 1 SELECT 'abc' REGEXP '[^a]';-- 1
使用[^]則代表的是,不能匹配到,那么有些人肯定會疑問,為什么最后一個卻匹配到了,雖然里面包含a,但是[^a]代表的是,除了a,里面還有其他的,也可以匹配成功,這里其實涉及到了一個單詞中的全匹配和局部匹配。
負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'
-- a* 匹配0個或多個a,包括空字符串。 可以作為占位符使用.有沒有指定字符都可以匹配到數(shù)據(jù) SELECT 'stab' REGEXP '.ta*b'; SELECT 'stb' REGEXP '.ta*b'; SELECT '' REGEXP 'a*';
注意這里的*是0個或者多個,所以最后一個返回的是1
-- a+ 匹配1個或者多個a,但是不包括空字符 SELECT 'stab' REGEXP '.ta+b'; SELECT 'stb' REGEXP '.ta+b';
注意這里的+是1個或者多個
-- a? 匹配0個或者1個a SELECT 'stb' REGEXP '.ta?b'; SELECT 'stab' REGEXP '.ta?b'; SELECT 'staab' REGEXP '.ta?b'; -- a1|a2 匹配a1或者a2, SELECT 'a' REGEXP 'a|b'; SELECT 'b' REGEXP 'a|b'; SELECT 'b' REGEXP '^(a|b)'; SELECT 'a' REGEXP '^(a|b)'; SELECT 'c' REGEXP '^(a|b)'; -- a{m} 匹配m個a SELECT 'auuuuc' REGEXP 'au{4}c'; SELECT 'auuuuc' REGEXP 'au{3}c';
注意這里的?是0個或者1個,標準的名字叫做非貪婪模式
-- a{m,n} 匹配m到n個a,包含m和n SELECT 'auuuuc' REGEXP 'au{3,5}c'; SELECT 'auuuuc' REGEXP 'au{4,5}c'; SELECT 'auuuuc' REGEXP 'au{5,10}c'; -- (abc) abc作為一個序列匹配,不用括號括起來都是用單個字符去匹配,如果要把多個字符作為一個整體去匹配就需要用到括號,所以括號適合上面的所有情況。 SELECT 'xababy' REGEXP 'x(abab)y'; SELECT 'xababy' REGEXP 'x(ab)*y'; SELECT 'xababy' REGEXP 'x(ab){1,2}y';
一般的實際應(yīng)用場景,通過正則表達式可以對文本進行匹配,這比之前的like關(guān)鍵字要智能的多,應(yīng)用場景也是比較的廣,所以需要熟悉它的語法標準:
select 字段 regexp '正則表達式' as 命名 from 表 ……
到此這篇關(guān)于MySQL數(shù)據(jù)庫操作DQL正則表達式的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫操作DQL 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql將數(shù)據(jù)庫中所有表結(jié)構(gòu)和數(shù)據(jù)導入到另一個庫的方法(親測有效)
這篇文章主要給大家介紹了關(guān)于mysql將數(shù)據(jù)庫中所有表結(jié)構(gòu)和數(shù)據(jù)導入到另一個庫的方法,文中通過代碼介紹的非常詳細,親測有效,對同樣遇到這個需求的朋友具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01mysql中find_in_set函數(shù)的基本使用方法
這篇文章主要給大家介紹了關(guān)于mysql中find_in_set函數(shù)的基本使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11centos7環(huán)境下創(chuàng)建mysql5.6多實例的方法詳解
這篇文章主要介紹了centos7環(huán)境下創(chuàng)建mysql5.6多實例的方法,詳細分析了centos7創(chuàng)建mysql5.6多實例的具體步驟、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-02-02MySQL計劃任務(wù)(事件調(diào)度器) Event Scheduler介紹
MySQL5.1.x版本中引入了一項新特性EVENT,顧名思義就是事件、定時任務(wù)機制,在指定的時間單元內(nèi)執(zhí)行特定的任務(wù),因此今后一些對數(shù)據(jù)定時性操作不再依賴外部程序,而直接使用數(shù)據(jù)庫本身提供的功能2013-10-10mysql數(shù)據(jù)庫修改添加Date格式列的方法
這篇文章主要介紹了關(guān)于mysql數(shù)據(jù)庫如何修改添加Date格式的列 ,需要的朋友可以參考下2014-07-07