MySQL - 正則表達式


1.  Mysql的正則表達式僅僅使SQL語言的一個子集,可以匹配基本的字符、字符串。 
    select * from wp_posts where post_name REGEXP 'hello';  可以檢索出列post_name中所有包含hello的行 

2.  .匹配除\n之外的任意單個字符
    select * from wp_posts where post_name REGEXP '.og';
    .是正則表達式中里一個特殊的字符。它表示匹配一個字符,因此,bog,cog,dog等等都能匹配。

    注意: 
    關於大小寫的區分:MySQL中正則表達式匹配(從版本3.23.4后)不區分大小寫 。
    如果要區分大小寫,應該使用BINARY關鍵字,如where post_name REGEXP BINARY 'Hello .000'

3.  ^匹配字符串開始位置,如查詢所有姓王的人名
    select name from 表名 where name REGEXP '^王';
   
4.  $匹配字符串結束位置,如查詢所有姓名末尾是“明”的人名
select name from 表名 where name REGEXP '明$'; 5. OR匹配 為了搜索多個串之一,使用| select * from products where pro_id REGEXP '1000|2000'; 這樣就1000和2000都能匹配並返回,當然,使用多個|就可以匹配多個串 6. []匹配幾個字符 例如,這樣將要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的范圍。 此外,范圍不一定只是數值的,[a-z]匹配任意字母字符 如查詢出w/z/s開頭的的人名 SELECT prod_name FROM products WHERE prod_name REGEXP '^[wzs]'; 7. [^……],匹配不包含在[]的字符,如查詢出除chenmin之外的人名 SELECT prod_name FROM products WHERE prod_name REGEXP '[^chenmin]'; 8. 匹配特殊字符使用\進行轉義 \\.能夠匹配. \\f換頁 \\n換行 \\r回車 \\t制表 \\縱向制表 注意:為了匹配\本身,需要使用\\\ 9. 匹配字符類 [:alnum:] 任意字母和數字(通[a-zA-Z0-9]) [:alpha:] 任意字符(同[a-zA-Z]) [:blank:] 空格和制表符(同[\\t]) [:digit:] 任意數字(同[0-9]) [:lower:] 任意小寫字母 [:upper:] 任意大寫字母 [:space:] 包括空格在內的任意空白字符 10. 匹配多個實例,關於重復元字符 * 0個或者多個匹配 + 1個或者多個匹配(等於{1,}) ? 1個或者多個匹配(等於{0,1}) {n} 指定數目的匹配 {n,} 不少於指定數目的匹配 {n,m} 匹配數目的范圍(m不超過255) 例子:select prod_name from products where prod_name REGEXP '[[:DIGIT:]]{4}'; 如前所述,[:digit:]匹配任意數字,因而它為數字的一個幾何。 [[:digit:]]{4}匹配連在一起的任意4位數字,當然,上面的例子也可以這樣寫REGEXP '[0-9][0-9][0-9][0-9]' 11. 定位符 ^ 文本的開始 & 文本的結尾 [[:<:]] 詞的開始 [[:>:]] 詞的結尾 通過使用這些定位符,能夠使REGEXP起類似LIKE的作用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM