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

回顾

正则表达式开始之前,先回顾一下在数据过滤也就是select语句的介绍中,已经学过的知识点:

正则表达式是一种用于文本处理和模式匹配的强大工具。它通过特定的字符序列和语法规则来定义搜索模式,能够在文本中快速查找、替换符合特定模式的字符串。

基础使用:regexp代替like

查询教师表中,名字结尾为的教师信息:

select * from teachers where teacher_name regexp '强';

其实对比like的用法,可以看出来上边sql的用法和like的语法很类似:

只是regexp代替了like,在mysql中,regexp后边跟的就是正则表达式

(其实正则表达式也会损失性能)

我们再看第二个使用场景:查询教师表中,所在院系均以语系结尾的教师信息:

上边的sql我们使用了.,这是正则表达式的一个特殊字符,表示匹配任意一个字符,所以所有以"语系"结尾的院系的教师信息都被查找并返回了

这个时候会有一个问题:正则表达式会损失性能,而且看似上边的场景我们使用like和%也可以完成,那么二者区别在哪里呢?

我们可以通过两个例子进行对比体会:查找教师姓名包含的所有教师信息:

select teacher_name from teachers where teacher_name like '强';


select * from teachers where teacher_name regexp '强';

为什么使用like返回的是空呢?

其实是因为上述like语句因为没有使用通配符,所以会匹配列的完整值,也就是上述第一个sql的语义是查找教师表中所有教师姓名为"强"的值,当然匹配不到

而第二个sql使用的正则表达式,在正则表达式中,regexp '强'则表示的是教师姓名包含强,匹配的是该列的值中是否包含所需的字符串

今天的正则表达式就先介绍到这里,简单入门,下一篇我们熟悉几种更加复杂的正则表达式使用场景。

相关推荐
zc.z30 分钟前
Tomcat线程池、业务线程池与数据库连接池的层级约束关系解析及配置优化
服务器·数据库·tomcat
Aplis32 分钟前
ETCD学习之路
数据库·学习·etcd
拷斤锟34 分钟前
使用Excel解析从OData API获取到的JSON数据
数据库·json·excel
翔云12345636 分钟前
MySQL 高并发下如何保证事务提交的绝对顺序?
数据库·mysql
叁沐1 小时前
MySQL 23 MySQL是怎么保证数据不丢的?
mysql
正在走向自律1 小时前
X2Doris是SelectDB可视化数据迁移工具,安装与部署&使用手册,轻松进行大数据迁移
数据库·数据迁移·selectdb·x2doris·数据库迁移工具
tuokuac1 小时前
SQL中的LEFT JOIN
数据库·sql
tuokuac1 小时前
SQL中的GROUP BY用法
数据库·sql
爱吃小土豆豆豆豆1 小时前
登录校验一
java·大数据·数据库
Albert Tan2 小时前
Oracle EBS 缺少adcfgclone.pl文件
数据库·oracle