Mysql——通配符和正则表达式的使用
Posted 耶low的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql——通配符和正则表达式的使用相关的知识,希望对你有一定的参考价值。
1.like操作符和百分号通配符
%表示任何字符出现任意次数。
查询出表TABLE中NAME字段中任意位置包含i的行:
select * from TABLE where NAME like \'%i%\'
查询出表TABLE中NAME字段中开头位置包含i的行:
select * from TABLE where NAME like \'i%\'
查询出表TABLE中NAME字段中结尾位置包含i的行
select * from TABLE where NAME like \'%i\'
注意:%不能匹配NULL;有一些字段首尾可能会出现空格,为了避免影响匹配结果,可以是同LTrim和RTrim函数去掉首尾的空格。
2.下划线通配符
下划线通配符只代表一个字符。
使用方法和%一样,比如查询出表TABLE中NAME为‘AAA’开头的四个字母的行
select * from TABLE where NAME like \'AAA_\'
3.正则表达式
除了使用like进行模糊匹配,还可以使用正则表达式进行模糊匹配。
正则表达式操作符:REGEXP
3.1基本字符匹配
查询出表TABLE中,字段NAME以A结尾的且只有两个字母的所有行:
select * from TABLE where NAME regexp \'.A\'
.是正则表达式的特殊字符,代表匹配任意一个字符。
3.2进行或(OR)匹配
查询出表TABLE中,字段NAME为AAA或BBB的行:
select * from TABLE where NAME regexp \'AAA|BBB\'
|为正则表达式的或操作符。
3.3匹配多个字符
查询出表TABLE中,字段NAME以A或B或C开头,且结尾为DD的行:
select * from TABLE where NAME regexp \'[ABC]DD\'
[ABC]定义一组字符,意思是:匹配A或B或C。
3.4范围匹配
查询出表TABLE中,字段NAME以1到9开头,且结尾为A的行:
select * from TABLE where NAME regexp \'[1-9]A\'
[1-9]意为:匹配1到9任意数字,[a-z]意为匹配任意字符。
3.5匹配特殊字符
这种问题几乎在每种语言中都会出现,即需要查询的内容中包含特殊字符。这时候就需要转义了。
在mysql中转义符为\\\\
查询出表TABLE中,NAME字段包含.的行:
select * from TABLE where NAME regexp \'\\\\.\'
3.6正则表达式常用元字符
注意:正则表达式匹配不区分大小写,如果需要区分在regexp后面加上关键字:binary
以上是关于Mysql——通配符和正则表达式的使用的主要内容,如果未能解决你的问题,请参考以下文章