题解41| like rlike regexp/ 个人笔记
筛选出学校名中包含特定关键词的用户
https://www.nowcoder.com/practice/db591191caf2437592abebdbe437ae2b
1、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 '%成人%')
2、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%'
说明: "()"括号将作为正则符号识别,需进行转义。
SQL解题笔记 文章被收录于专栏
记录解题过程中遇到的问题、出现的错误以及掌握不牢固的知识点