MySQL 中模糊匹配

一、like模糊匹配-单项

常用通配符有两个: '%'百分号、'_'下划线。

%: 可以匹配0~多个字符
_: 只能匹配1个字符

select id, device_id, university
from user_profile
where (university like '北京%' or university like '上海%')
and (university like '%学院' or university like '%校区')
and (university like '%职业%' or university like '%专科%' or university like '%成人%')

二、rlike支持模糊匹配-多项

搭配正则表达式,rlike与REGEXP用法相似。

常用通配符:. 、* 、 [] 、 ^ 、 $ 、{n}

  • . : 匹配任意单个字符
  • * :匹配0个或多个前一个得到的字符
  • + : 匹配前一个字符一次或多次
  • [] : 匹配任意一个[]内的字符,[ab]*可匹配空串、a、b、或者由任意个a和b组成的字符串。
  • ^ : 匹配开头,如^s匹配以s或者S开头的字符串。
  • $ : 匹配结尾,如s$匹配以s结尾的字符串。
  • {n} :匹配前几个字符的n个实例
  • p1|p2 : 匹配p1或p2模式
select id, device_id, university
from user_profile
where university rlike '^(北京|上海).*(职业|专科|成人).*(学院|校区)$'

'^(北京|上海).(职业|专科|成人).(学院|校区)$' --表示以北京/上海开头,中间隔0到多个字符链接职业/专科/成人,隔0到多个字符以学院/校区 结尾。

select id, device_id, university
from user_profile
where university regexp '^(北京|上海).*(职业|专科|成人).*(学院|校区)$'

rlike 'A|B' 等同于 like '%A%' or like '%B%'

rlike 'A(2)|B2' 需改成 rlike 'A\(2\)|B2',即使用'\'双斜线对特殊符号转义, 等同于 like '%A(2)%' or like '%B2%'

说明: "()"括号将作为正则符号识别,需进行转义。

posted @ 2024-04-03 17:43  启航黑珍珠号  阅读(645)  评论(0编辑  收藏  举报