1. 正则表达式介绍

随着过滤条件复杂性的增加,where 子句本身的复杂性也会增加,这就是正则表达式变得有用的地方。正则表达式是用来匹配文本的特殊的串(字符集合)

2. 使用MySQL正则表达式

MySQL使用 where 子句时,允许你指定正则表达式,过滤select检索出的数据。

2.1 基本字符匹配
  1. 搜索文本包含151
  2. select userphone from userdata where userphone regexp '151';

点(.)是MySQL中一个特殊字符,它表示任意匹配一个字符,’.00’可以匹配到100、200等等

  1. 搜索某个字符后面跟00
  2. select userphone from userdata where userphone regexp '.00';

正则匹配不区分大小写,为了区分大小写,需要binary 关键字,如:

  1. select phoneid from phonedata where phoneid regexp binary 'iPhone 6';

2.2 进行 or 匹配

搜索两个串之一,使用“|”。

  1. 搜索包含151189
  2. select userphone from userdata where userphone regexp '151|189';

也可以使用两个以上,如’151|155|189‘,可以匹配151或155或189。

2.3 匹配几个字符之一

如果只想匹配特定的字符,可以通过指定一组用[ ]括起来的字符完成。

  1. 匹配 1 kg 2 kg 3kg
  2. select productweight from productdata where productweight regexp '[1|2|3] kg';
  3. 等同于
  4. select productweight from productdata where productweight regext '[123] kg';

2.4 匹配范围

集合可以用来定义要匹配的一个或者多个字符。[1-9]匹配数字1到9,[a-z]匹配字母a到z。

  1. 匹配 1 kg 2 kg 3kg
  2. select productweight from productdata where productweight regexp '[1-3] kg';

2.5 匹配特殊字符

匹配特殊字符使用‘\’来转义。如