mysql 正则表达式区间_MySQL-正则表达式

概述

前面的一讲我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配,MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

实例

基本字符匹配

select employee_name from yw_employee where employee_name regexp '王'

该语句检索列employee_name包含文本王的所有行

select employee_name from yw_employee where employee_name regexp '.张'

该语句中的正则表达式(.),是正则表达式语言中的一个特殊字符,表示匹配任意一个字符(该语句也可以使用like和通配符完成)

like和regexp的区别:

like匹配整个列

select employee_name from yw_employee where employee_name like '王'

该SQL语句将不返回数据,因为like匹配整个列,如果被匹配的文本在列值中出现,like将不会找到它,相应的行也不会被返回(除非使用通配符%)

regexp在列值内进行匹配

select employee_name from yw_employee where employee_name regexp '王'

该SQL语句会返回一行数据,如果被匹配的文本在列值中出现,regexp将会找到它,相应的行将被返回(如果希望regexp匹配整个列值,使用^和$定位符{anchor})即可

进行or匹配

select employee_name from yw_employee where employee_name regexp '王|李'

or表示匹配其中之一,功能与select语句中的or语句,多个or条件可并入单个正则表达式

匹配几个字符之一

select employee_name from yw_employee where employee_name regexp '[薛]占国'

[]是另一种形式的or语句,作用是匹配指定的(其中之一)字符;正则表达式[薛占]国为[薛|占|]国的缩写,它的意思是匹配薛或者占字符集合也可以被否定,即匹配除指定字符外的任何东西,为否定一个字符集,可以在集合开始处设置一个‘^’例如[^薛占]([]定义更准确,|如果不括起来,则应用于整个串)

匹配范围

集合可以用来定义要匹配的一个或多个字符

比如[010203040506070809],为了简化这种类型的集合,可使用(-)来定义一个范围,即[0-9];(范围不仅仅局限于数值,还可以使字母字符等)

匹配特殊字符

正则表达式由具有特定含义的特殊字符构成;如果要匹配这些特殊字符,就需要用\\为前导;\\-表示查找-,\\.表示查找.。

select employee_name from yw_employee where employee_name regexp '\\薛'

这种处理方式就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义;(为了匹配反斜杠{\}字符本身,需要使用\\\)

例:多数正则表达式实现使用单个反斜杠转义特殊字符,以便能够使用这些字符本身,而MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释一个)  \\也用来引用元字符(具有特殊含义的字符),如下:

匹配字符类

字符类(character class):有时候需要检索出我们需要的数字、所有字母字符或所有数字字母字符等的匹配,我们可以使用预定义的字符集,称为字符类;如下:

a4bf7be2673813d12488bc6008106b44.png

匹配多个实例

有时候需要对匹配的数目进行更强的控制,比如:寻找所有的数,不管数中包含多少数字,或寻找一个单词并尾随一个s(如果存在)等情况,我们可以利用正则表达式中的重复元字符来完成;如下

定位符

有时候为了匹配特定位置的文本,需要使用定位符,常用定位符列表如下:

以上就是mysql正则表达式相关的知识,

大家学到了吗,欢迎点赞、评论、打赏作者,更多知识点将在后续继续分享学习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值