最近在《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]
....
等等