题解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解题笔记 文章被收录于专栏

记录解题过程中遇到的问题、出现的错误以及掌握不牢固的知识点

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
评论
25
4
分享
牛客网
牛客企业服务