溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法

發(fā)布時間:2022-07-12 10:04:31 來源:億速云 閱讀:135 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

前言:

正則表達(dá)式(regular expression)描述了一種字符串匹配的規(guī)則,正則表達(dá)式本身就是一個字符串,使用這個字符串來描述、用來定義匹配規(guī)則,匹配一系列符合某個句法規(guī)則的字符串。在開發(fā)中,正則表達(dá)式通常被用來檢索、替換那些符合某個規(guī)則的文本。

MySQL通過REGEXP關(guān)鍵字支持正則表達(dá)式進(jìn)行字符串匹配。

MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法

MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法

-- ^ 在字符串開始處進(jì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,里面還有其他的,也可以匹配成功,這里其實涉及到了一個單詞中的全匹配和局部匹配。

負(fù)值字符集合。匹配未包含的任意字符。例如, '[^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個,標(biāo)準(zhǔn)的名字叫做非貪婪模式

-- 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)用場景,通過正則表達(dá)式可以對文本進(jìn)行匹配,這比之前的like關(guān)鍵字要智能的多,應(yīng)用場景也是比較的廣,所以需要熟悉它的語法標(biāo)準(zhǔn):

select 字段 regexp '正則表達(dá)式' as 命名 from 表   ……

讀到這里,這篇“MySQL數(shù)據(jù)庫操作DQL正則表達(dá)式的方法”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI