符號之間,記住你所需要的正則表達式

在sql語言中一般使用正則表達式過濾數據
01or的關係

a|b 結果=字段1(包含a)+字段2(包含b)
意思是字段中有a或者b都可以

SELECT *
FROM student.re
WHERE restr REGEXP 'a|b'

在這裏插入圖片描述
【】匹配括號內的單個字符

SELECT *
FROM student.re
WHERE restr REGEXP '[a]'

在這裏插入圖片描述
如果覺得和上一個沒關係,請看下面例子

SELECT *
FROM student.re
WHERE restr REGEXP '[ab]'

【ab】表示【】裏面有a或者b=a|b在這裏插入圖片描述
事實上上面的正則表達式也可以按照下面方式改寫

SELECT *
FROM student.re
WHERE restr REGEXP '[a|b]'

在這裏插入圖片描述
【m-n】
表示匹配到m-n任意一個字符包括端點值

SELECT *
FROM student.re
WHERE restr REGEXP '[1-a]'

在這裏插入圖片描述
【m-n】=m|。。。+。。。|n
好吧,我承認這是一種在現實當中沒人會去這樣用的傻方法
不過,這也只是想幫你發現之間的關係,方便記憶
特殊的
mm?ns
表示選擇mn或者mmn可以理解爲
mm?ns=mn|mmn

SELECT *
FROM student.re
WHERE restr REGEXP 'aa|b'

在這裏插入圖片描述

【^ABC】
表示除ABC外必須有其他的

SELECT *
FROM student.re
WHERE restr REGEXP '[^abc]'

在這裏插入圖片描述
02指數的關係
a{m}
匹配到有m個a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{2}'

在這裏插入圖片描述
a{m,}
匹配到m或者多個a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,}'

這裏其實可以理解爲,對a不設置上限
在這裏插入圖片描述
有了不設置上限,有沒有不設置下限呢?

SELECT *
FROM student.re
WHERE restr REGEXP 'a{,1}'!

在這裏插入圖片描述
類似的還有a{}

SELECT *
FROM student.re
WHERE restr REGEXP 'a{}'

結果和上面的一樣
在這裏插入圖片描述
m能爲0嗎?當然可以

SELECT *
FROM student.re
WHERE restr REGEXP 'a{0,}'

等同於全選,雖然有結果。但是起不到過濾作用,是個雞肋,沒有卵用。

在這裏插入圖片描述
a{m,n}
匹配m到n個a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,2}'

在這裏插入圖片描述
03其他關係
^a表示
以a開頭的

SELECT *
FROM student.re
WHERE restr REGEXP '^ab'

在這裏插入圖片描述
a$
表示以a結尾的

SELECT *
FROM student.re
WHERE restr REGEXP 'ab$'

在這裏插入圖片描述
.a在字符串中必須有a。且a前必須有任意一個字符

SELECT *
FROM student.re
WHERE restr REGEXP '.ab'

在這裏插入圖片描述
ab+
匹配一個或多個ab,不包括空

SELECT *
FROM student.re
WHERE restr REGEXP 'ab+'

在這裏插入圖片描述
(。。。)意思是將()內的看成單一元素進行操作
(ab)+
ab,abab,ababab。。。。

SELECT *
FROM student.re
WHERE restr REGEXP '(ab)+'

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章