MySQL 基础教程-05 模式匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 基础教程-05 模式匹配相关的知识,希望对你有一定的参考价值。

林员外 数据库杂货铺 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 模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

python基础教程Python字符串及文本模式方法详解

MySQL 基础教程-01

Linux基础教程 - find命令

正则表达式基础

MySQL 通配符学习小结

【ZBrush教程】01-ZB基础操作(上)