目錄
一、使用正則表達(dá)式進(jìn)行基本字符匹配
1.使用regexp關(guān)鍵字
2.使用正則表達(dá)式? .?
二、進(jìn)行OR匹配
1.為搜索兩個串之一,使用? ?|??
2.匹配幾個字符之一[]
3.匹配范圍
?4.匹配特殊字符
過濾數(shù)據(jù)允許使用匹配、比較、通配符操作來尋找數(shù)據(jù),但是隨著過濾條件的復(fù)雜性增加,WHERE子句本身的復(fù)雜性也有必要增加。
正則表達(dá)式就是用來匹配文本的特殊字符串(字符集合)。如果想從一個文本文件中提取出來電話號碼就可以使用正則表達(dá)式。所有種類的程序設(shè)計語言、文本編輯器、操作系統(tǒng)等都支持正則表達(dá)式。
一、使用正則表達(dá)式進(jìn)行基本字符匹配
示例:在列phone中尋找包含666的所有行
1.使用regexp關(guān)鍵字
輸入:select phone from t_user where phone regexp '666' order by phone;
輸出:
?以上例子關(guān)鍵字like被regexp替代,看上去非常像like的語句,但是這個語句告訴mysql:regexp后所跟的東西為正則表達(dá)式處理。
2.使用正則表達(dá)式? .?
.?是正則表達(dá)式語言中一個特殊的字符,它表示匹配任意一個字符。
示例:找出表中email列中包含“.com”的行
輸入:select email from t_user where email regexp '.com' order by email;
輸出:
?注意:MySQL中的正則表達(dá)式匹配不區(qū)分大小寫(即,大寫、小寫 都匹配)。為區(qū)分大小寫,可以使用BINARY關(guān)鍵字,如:where name regepx binary 'JanePack'。
二、進(jìn)行OR匹配
1.為搜索兩個串之一,使用? ?|??
示例:尋找表t_user中phone列包含6 或 8 的列
輸入:select phone from t_user where phone regexp '6|8' order by phone;
輸出:
| 為正則表達(dá)式的OR符號。它表示匹配其中之一,因此6和8都匹配并返回。類似于select語句中的OR語句。
2.匹配幾個字符之一[]
如果只想匹配特定的字符,可以通過一組 [和] 括起來的字符來完成。
示例:尋找email列中? .com前是3和q的行
輸入:select email from t_user where email regexp '[q3].com' order by phone;
輸出:
?[]是另一種形式的OR語句。正則表達(dá)式[q3].com是[q|3].com的縮寫,兩個都可以使用。但是后者需要用[]來定義OR語句查找。
3.匹配范圍
集合可以用來定義要匹配的一個或多個字符。例如[123456789],為了簡化這種類型的集合,可以使用 - 來定義一個范圍,比如:[1-9],且匹配范圍不一定是數(shù)值的,也可以是[a-z]。
示例:在t_user表中尋找id在1-4范圍內(nèi)的name行和email行
輸入:?select name,email from t_user where id regexp '[1-4]';4]';
輸出:
?4.匹配特殊字符
為了匹配特殊字符,必須用 \\ 作為前導(dǎo)。\\-表示查找- ,\\.表示查找 . 。
示例:找出t_user表中email列中有.的name行
輸入:select name from t_user where email regexp '\\.' order by name;
輸出:
?更多 \\ 來引用的字符:
\\f | 換頁 |
\\n | 換行 |
\\r | 回車 |
\\t | 制表 |
\\v | 縱向制表 |
注意:為了匹配反斜杠(\)字符本身,需要使用(\\\)。文章來源:http://www.zghlxwxcb.cn/news/detail-626860.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-626860.html
到了這里,關(guān)于MySQL正則表達(dá)式檢索數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!