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

MySQL 基础教程-05 模式匹配

时间:2020-12-14 13:09:36      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:实用   通配   种类型   模式匹配   binary   测试   正则表达   指定   效果   

林员外 数据库杂货铺 6月16日
MySQL提供了标准的SQL模式匹配和一种基于扩展正则表达式的模式匹配形式,类似于vi、grep和sed等Unix实用程序所使用的正则表达式。
SQL模式匹配允许我们使用_匹配任何单个字符,使用%匹配任意数量的字符(包括零个字符)。在MySQL中,SQL模式默认不区分大小写。下面提供一些例子。使用SQL模式时不要使用=或<>,请用LIKE或NOT LIKE比较运算符。
查出以b开头的名字:

技术图片

查出以fy结尾的名字:

技术图片
查出包含字母w的名字:

技术图片

查找正好包含五个字符的名字,使用5个_模式字符进行匹配:

技术图片
MySQL提供的另一种模式匹配使用扩展正则表达式。测试这种类型的模式是否匹配时,请使用REGEXP_LIKE()函数(或REGEXP或RLIKE运算符,它们是REGEXP_LIKE()的同义词)。

下面列出了扩展正则表达式的一些特性:
. 匹配任何单个字符。

字符类[…]匹配括号内的任何字符。例如,[abc]匹配a、b或c。若要定义字符范围,请使用短划线。[a-z]匹配任意字母,而[0-9]匹配任意数字。

匹配它前面事物的零个或多个实例。例如,x匹配任意数量的x个字符,[0-9]匹配任意数量的数字,.匹配任意数量的任何字符。

如果模式与测试值中的任何位置匹配,则正则表达式模式匹配将成功。(这与LIKE模式匹配不同,LIKE模式匹配仅在模式与整个值匹配时才成功。)

要锚定一个模式,使其必须与正在测试的值的开头或结尾匹配,请在模式的开头使用^或结尾使用$。

为了演示扩展正则表达式是如何工作的,这里将使用REGEXP_LIKE()重写前面显示的LIKE查询。
查找以b开头的名字,用^匹配名字的开始:

技术图片

若要强制正则表达式比较区分大小写,请使用区分大小写的字符序(collation),或使用BINARY关键字使其中一个字符串成为二进制字符串,或指定c 匹配控制字符。以下每个查询只匹配小写b开头的名字:

技术图片

要查找以fy结尾的名称,请使用$匹配名称的结尾:

技术图片

要查找包含w的名称,请使用以下查询:

技术图片

正则表达式模式会匹配值中的任何地方,所以这个查询中不必在模式的任何一边放置通配符,以使它与整个值匹配,这和SQL模式效果是一样的。
若要查找正好包含五个字符的名称,请使用“^”和“$”匹配名称的开头和结尾以及两者之间的五个.:

技术图片

还可以使用{n}(“重复n次”)运算符编写上一个查询:

技术图片

MySQL 基础教程-05 模式匹配

标签:实用   通配   种类型   模式匹配   binary   测试   正则表达   指定   效果   

原文地址:https://blog.51cto.com/15023289/2561185

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