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

[复制链接]
发表于 2025-10-23 21:19:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回首

正则表达式开始之前,先回首一下在数据过滤也就是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 '强'则表现的是西席姓名包罗强,匹配的是该列的值中是否包罗所需的字符串
本日的正则表达式就先先容到这里,简朴入门,下一篇我们认识几种更加复杂的正则表达式使用场景。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表