MySQL 模式匹配

MySQL 模式匹配

LIKE模式

利用 LIKE 运算符以及通配符 “%”(能匹配任意字符序列)和 “_”(只能匹配单个字符)实现的。

  • 通配符”%”能匹配任何字符串,包括空字符串,但是不能匹配 NULL
  • 如果 LIKE 的一边为二进制串,则两边都当成二进制串比较,如果都不是二进制串,则根据它们的排序规则来进行比较

正则表达式 REGEXP

利用 REGEXP 运算符正则表达式实现的。

  • 点号字符 “.” 可以匹配任何单个字符,如:
    • ’abc’ REGEXP ‘a.c’
  • 方括号 “[…]” 可以匹配列在方括号内部的任何字符,如:
    • ’e’ REGEXP ‘[aeiou]’
  • 连接符 “-“ 可用于指定字符范围,其两端分别为范围的起始结束字符“^” 用于把这个字符范围的含义变反(匹配未列在其中的字符),如:
    • ’abc’ REGEXP ‘[a-z]’
    • ‘abc’ REGEXP ‘[^d-z]’
  • “*” 表示匹配前面的子表达式零次或多次,如:
    • ’abcdef’ REGEXP ‘a.*f’
    • ‘xxxxx’ REGEXP ‘x*’
    • ‘abc’ REGEXP ‘[0-9]*abc’ 因为任意个包括 0 个
  • 如果要匹配前面的子表达式一次或多次,则需要使用 “+” 来代替 “*”,如:
    • ’abc’ REGEXP ‘cd*’ – 可以匹配零次
    • ‘abc’ REGEXP ‘cd+’ 错误 – 不可以匹配零次,至少匹配一次
    • ‘abcd’ REGEXP ‘cd+’
  • “^pattern” & “pattern$” 模式,当 pattern 出现在字符串的开头结尾时,匹配成功,而 “^pattern$” 只有匹配整个 pattern 才能匹配成功,如:
    • ’abc’ REGEXP ‘b’
    • ‘abc’ REGEXP ‘^abc$’
    • ‘abc’ REGEXP ‘^a’
    • ‘abc’ REGEXP ‘bc$’

两者之间差异

除了使用运算符不同之外,两个重要的差异:
- SQL 的 LIKE 模式只用于匹配整个字符串;正则表达式 REGEXP 可以匹配字符串的任何部分
- LIKE 运算符是多字节安全的。REGEXP 运算符只能正确地处理单字节字符集,并不会考虑排序规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值