MySQL零基础教程10—正则表达式搜索(下)

前边已经初步认识了正则表达式,今天继续来看在mysql中使用正则表达式搜索的其他用法

mysql正则表达式的"或"

使用正则表达式可以帮助我们更加灵活地进行"或"条件的数据检索,直接上例子:

场景一:查询教师表中,院系名称包含日语或包含德语的教师信息:

select * from teachers where regexp '德语 | 日语';

这里的|符号就是表示的或的关系

匹配几个字符之一

如果想要匹配特定的几个字符,而不是像select * from teachers where teacher_name like '%强一样匹配任意字符,也可以通过正则表达式完成:

场景二:查询教师表中title为一级教师或者耳机教师的教师信息:

select * from teachers where title regexp '[一二]级教师';

如上所示,如果想要从指定的几个字符中选一个使用的是中括号[]

匹配范围

在上边我们使用[]可以指定我们想要检索的字符的范围,那么如果这个范围是类似[0123456789]的时候,我们可以简化一下,使用-

场景三:查询教师表中教师工号结尾为1-9的教师信息:

select * from teachers where teacher_id regexp 'T00[1-9]';

使用正则表达式匹配特殊字符

前边我们的正则表达式分别使用了./|/[]/-这些特殊字符,那么问题来了,如果我就是想要查找包含这些特殊字符的数据怎么办呢?

场景四:从教师表中查找名字包含.的教师信息:

如果我们按照之前的做法:

select * from teachers where teacher_name regexp '.';

结果就是把所有信息都返回了,所以这里我们需要使用\\来转义:

select * from teachers where teacher_name regexp '\\.';

结果正确,当然如果需要查找包含\符号的数据,就要使用\\\

匹配字符类数据

正则表达式中给出了预定义的字符集,方便更加便捷地搜索:

场景五:查找名字为英文名字的教师信息:

select * from teachers where teacher_name regexp '[:alpha:];

匹配多个实例

正则表达式可以对查询的结果进行更加精准的控制,使用下边的重复元字符完成:

场景六:从教师表中,查出来地址为1-9区文化街的信息(假设教师在提交地址信息的时候,有人填写的是xx街,有人填写的是xx街道,我们要考虑这种情况)

select * from teachers where address regexp '[1-9]区建设街道?';

上边的正则表达式[1-9]就表示包含任意1-9数字,区文化街都是匹配,前边的问号 ? 表示的是"道"字可选,所以建设街,建设街道都会匹配到

实际上,这里我们不加问号,直接使用[1-9]区建设街也是一样的,因为正则表达式默认的是部分匹配,也就是包含区建设街就会匹配到

定位符

前边的例子都是匹配某个字符串任意位置的文本,如果需要指定匹配位置,就需要使用下边的定位符:

(场景之后补充)

相关推荐
C***11506 分钟前
Spring TransactionTemplate 深入解析与高级用法
java·数据库·spring
计算机学姐21 分钟前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
+VX:Fegn089522 分钟前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
2301_8002561124 分钟前
B+树:数据库的基石 R树:空间数据的索引专家 四叉树:空间划分的网格大师
数据结构·数据库·b树·机器学习·postgresql·r-tree
程序人生51835 分钟前
宝塔安装完mysql5.7后 root无法通过远程连接问题排查
mysql·宝塔面板
大厂技术总监下海1 小时前
用户行为分析怎么做?ClickHouse + 嵌套数据结构,轻松处理复杂事件
大数据·数据结构·数据库
alonewolf_991 小时前
深入理解MySQL事务与锁机制:从原理到实践
android·数据库·mysql
骑着bug的coder1 小时前
第11讲:主从复制与读写分离架构
后端·mysql
朝依飞1 小时前
fastapi+SQLModel + SQLAlchemy2.x+mysql
数据库·mysql·fastapi
3***g2051 小时前
redis连接服务
数据库·redis·bootstrap