it编程 > 编程语言 > 正则表达式

MySQL数据库中正则表达式(Regex)和like的区别详析

87人参与 2025-11-30 正则表达式

核心区别:通配符 vs 模式语言

具体对比

1.匹配能力对比

需求场景like 实现正则表达式实现说明
以"a"开头like 'a%'^a两者都能做到
包含"abc"like '%abc%'abc两者都能做到
精确5个字符like '_____'^.{5}$like需要5个_,不直观
数字开头❌ 无法实现^\dlike无法匹配"任意数字"
邮箱验证❌ 极其困难^\w+@\w+\.\w+$like难以精确匹配
密码强度❌ 无法实现^(?=.*[a-z])(?=.*\d).{8,}$like无法做前瞻断言

2.实际案例演示

假设我们有一个用户表,要查找符合以下条件的用户名:

需求:找到以数字开头,第三个字符是元音字母,总长度至少为5的用户名

sql

-- 使用 like  几乎不可能实现
-- 我们需要枚举所有可能性:
select * from users where 
  name like '0_a%' or 
  name like '1_a%' or 
  name like '2_a%' or 
  -- ... 需要写30种组合,极其繁琐!
  name like '9_u%';

-- 使用正则表达式  一行搞定
select * from users where name regexp '^[0-9].[aeiou].{2,}';
-- 解释:^[0-9] 数字开头, . 任意字符, [aeiou] 元音字母, .{2,} 至少2个任意字符

3.性能考虑

sql

-- 能利用索引(如果name有索引)
select * from users where name like 'john%';

-- 不能利用索引
select * from users where name like '%john%';
select * from users where name regexp 'john';

4.适用场景总结

场景推荐使用原因
简单前缀/后缀匹配like语法简单,可能利用索引
固定格式匹配like如 like 'abc____'
复杂模式匹配正则表达式如邮箱、电话、特定模式
数据验证正则表达式如密码强度、格式检查
数据提取正则表达式如从文本中提取特定模式

结论

您的观察是对的——对于简单的模式匹配,like 确实可以做到,而且应该优先使用,因为它的性能可能更好。

但是当需求变得复杂时:

经验法则

在实际的数据库工作中,两者都是重要的工具,根据具体需求选择合适的使用才是关键!

到此这篇关于mysql数据库中正则表达式(regex)和like区别的文章就介绍到这了,更多相关mysql正则表达式regex和like区别内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

R语言中的正则表达式深度解析

12-14

RegExp正则表达式基础语法示例教程

12-25

正则表达式中单个字符的匹配方法教程

12-25

RabbitMQ工作模式之通配符模式详解

01-15

一篇文章详细讲解正则表达式库和第三方库

09-22

一文精通正则表达式中的前后查找断言

09-22

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论