最近在《MYSQL必知必會》這本書中讀到在SQL中使用正則表達式,以前是學過數據庫也學過正則表達式,但是不知道原來他們可以一起使用,這里做下記錄。
首先是Mysql使用正則表達式的語法:
SELECT ... FROM ... WHERE ... REGEXP '...'(這里引號里面寫正則表達式)
有同學可能學過LIKE模糊匹配,沒有學習過正則表達式,其實正則表達式就是高級的匹配。建議花點時間去學習,可以看https://www.cnblogs.com/clno1/p/12292912.html這篇博文。
這里只列幾個最常用的用法,其實就是正則表達式的東西:
① 元字符匹配
SELECT name
FROM products
WHERE name REGEXP '.000'
這里的 . 是正則表達式里面表示一個任意字符的意思,那么在這里就是能匹配比如 '1000' '2000' '9000' 等等。
②使用OR匹配
SELECT name
FROM products
WHERE name REGEXP '1000|2000'
③字符集匹配
SELECT name
FROM products
WHERE name REGEXP '[123] Ton'
這里的[]就是字符集合,其實也可以用-表示集合范圍,比如說[1-9a-z]表示數組1到9加上小寫字母a到z。
④轉義字符
就是正則表達式里已經用到的用來表示匹配規則的字符需要轉義才能使用。
⑤匹配個數
最后是字符集合為了方便使用我們有一些預設好的:
[:alnum:] 表示任意字母和數字,即[0-9a-zA-Z]
[:alpha:] 表示任意字符[a-zA-Z]
....
等等