码迷,mamicode.com
首页 > 数据库 > 详细

Mysql——通配符和正则表达式的使用

时间:2019-11-24 19:58:07      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:reg   多个   tab   包含   字段   元字符   使用方法   正则表达   regexp   

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——通配符和正则表达式的使用

标签:reg   多个   tab   包含   字段   元字符   使用方法   正则表达   regexp   

原文地址:https://www.cnblogs.com/lbhym/p/11923518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!