1. 正则表达式介绍
随着过滤条件复杂性的增加,where 子句本身的复杂性也会增加,这就是正则表达式变得有用的地方。正则表达式是用来匹配文本的特殊的串(字符集合)
2. 使用MySQL正则表达式
MySQL使用 where 子句时,允许你指定正则表达式,过滤select检索出的数据。
2.1 基本字符匹配
搜索文本包含151的
select userphone from userdata where userphone regexp '151';
点(.)是MySQL中一个特殊字符,它表示任意匹配一个字符,’.00’可以匹配到100、200等等
搜索某个字符后面跟00的
select userphone from userdata where userphone regexp '.00';
正则匹配不区分大小写,为了区分大小写,需要binary 关键字,如:
select phoneid from phonedata where phoneid regexp binary 'iPhone 6';
2.2 进行 or 匹配
搜索两个串之一,使用“|”。
搜索包含151或189的
select userphone from userdata where userphone regexp '151|189';
也可以使用两个以上,如’151|155|189‘,可以匹配151或155或189。
2.3 匹配几个字符之一
如果只想匹配特定的字符,可以通过指定一组用[ ]括起来的字符完成。
匹配 1 kg 或 2 kg 或 3kg
select productweight from productdata where productweight regexp '[1|2|3] kg';
等同于
select productweight from productdata where productweight regext '[123] kg';
2.4 匹配范围
集合可以用来定义要匹配的一个或者多个字符。[1-9]匹配数字1到9,[a-z]匹配字母a到z。
匹配 1 kg 或 2 kg 或 3kg
select productweight from productdata where productweight regexp '[1-3] kg';
2.5 匹配特殊字符
匹配特殊字符使用‘\’来转义。如