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 模式匹配的主要内容,如果未能解决你的问题,请参考以下文章