本文使用的表还是上一个表:
一:使用mysql正则表达式
mysql的like只有%和下划线_,regex功能更强大。
其中like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可。
1.select id from elec where id regexp '1007' order by id; 将显示匹配id=1000的行。
2.select id from elec where id regexp '.007' order by id; 将匹配.007的所有行。
3.进行or匹配
select id from elec where id regexp '1001|1003' order by id;
词语中使用了正则表达式1001|1003。|为正则表达式的or操作符。它表示匹配其中之一,因此1000和2000都匹配并返回。
也可匹配多个:1001|1003|1007
4.匹配几个字符之一
如果你只想匹配特定的字符,可以指定一组用[]括起来的字符来完成。
5.使用[]限定特定字符。
select id from elec where id regexp '100[23]'; 返回匹配100x的值,但是这个x被[]限定取值为2,3。
[]实际上相当于另一种形式的or语句,但是不能用'1|2|3 ton'这种形式代替‘[123] ton’,因为mysql假定你的意思是'1'或‘2’或‘3 ton‘。除非把字符|括在一个集合中,否则它将应用于整个串。
[^123]可以匹配这些字符外任何东西。
6.匹配范围
集合可用来定义匹配的一个或多个字符,例如下面的集合将匹配数字0到9:
[01233456789],
为了简化这种类型的集合,可以用-来定义一个范围。如[0-9],此外范围不一定是数字,如[a-z]匹配任意字母字符。
7.为了匹配特殊字符,必须用\\为前导。\\-表示查找-,\\.表示查找.。
\\也用来引用元字符,具有特殊的含义。如:
8.匹配字符类
存在着出你自己常用的数组,所有字母字符或者所有数字字母字符等的匹配。为更方便的工作,可以使用预定义的字符集,成为字符类。
9.匹配多个实例
目前为止所有使用的正则表达式都试图匹配单次出现。如果存在一个匹配,改行被检索出来,如果不存在,检索不出任何行。但有时需要对匹配的数目进行更强的控制。例如,
你可能需要寻找所有的数,不管数中包含多少数字,或者你还可能讯炸一个单词并且还能够适应一个尾随化的s。可以用下列正则表达式重复元字符来完成。
举例:
或者:
10.定位符
注意如果^符号出现在[]里面,代表取反的意思。出现在外面代表定位。