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%'
说明: "()"括号将作为正则符号识别,需进行转义。