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 '强'则表示的是教师姓名包含强,匹配的是该列的值中是否包含所需的字符串

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

相关推荐
黄焖鸡能干四碗4 分钟前
智慧教育,智慧校园,智慧安防学校建设解决方案(PPT+WORD)
java·大数据·开发语言·数据库·人工智能
敲上瘾9 分钟前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
DemonAvenger17 分钟前
MySQL内存优化:缓冲池与查询缓存调优实战指南
数据库·mysql·性能优化
RationalDysaniaer21 分钟前
了解etcd
数据库·etcd
正在走向自律34 分钟前
国产时序数据库选型指南-从大数据视角看透的价值
大数据·数据库·清华大学·时序数据库·iotdb·国产数据库
Pocker_Spades_A35 分钟前
Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
数据库·python
禁默1 小时前
已知 inode 号,如何操作文件?Ext 文件系统增删查改底层逻辑拆解
linux·服务器·数据库
云飞云共享云桌面1 小时前
工厂办公环境如何实现一台服务器多人共享办公
运维·服务器·网络·数据库·3d
weixin_456904271 小时前
MySQL高级特性详解
数据库·mysql
Elastic 中国社区官方博客1 小时前
使用 cloud-native Elasticsearch 与 ECK 运行
大数据·数据库·elasticsearch·搜索引擎·kubernetes·k8s·全文检索