当前位置: 首页 > news >正文

MySQL中【正则表达式】用法

MySQL正则表达式通过 REGEXPRLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例:


一、基础语法

SELECT column_name 
FROM table_name 
WHERE column_name REGEXP 'pattern';
-- 或
WHERE column_name RLIKE 'pattern';

二、常用元字符

元字符说明示例
^匹配开头'^a' → 以 “a” 开头
$匹配结尾'z$' → 以 “z” 结尾
.匹配任意单个字符'a.c' → “abc”, “axc”
[...]字符集合'[aeiou]' → 匹配任一元音
[^...]排除字符集合'[^0-9]' → 非数字字符
*前一个字符0次或多次'ab*c' → “ac”, “abbc”
+前一个字符1次或多次'ab+c' → “abc”, “abbc” (排除"ac")
{n}前一个字符n次'a{3}' → “aaa”
|或操作'cat|dog' → “cat” 或 “dog”

三、实际示例

  1. 匹配以数字开头的字符串

    SELECT name FROM products WHERE name REGEXP '^[0-9]';
    
  2. 匹配包含特定单词的文本

    SELECT content FROM logs WHERE content REGEXP 'error|warning';
    
  3. 匹配邮箱格式

    SELECT email FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';
    
  4. 匹配连续重复字符

    SELECT word FROM dictionary WHERE word REGEXP '(.)\\1'; -- 如 "book"('oo')
    

四、与 LIKE 的区别

特性REGEXPLIKE
功能复杂模式匹配简单通配符 (%, _)
大小写敏感默认不敏感(除非二进制字符串)依赖字段排序规则
性能通常较慢(全表扫描)可能使用索引

五、进阶函数(MySQL 8.0+)

  1. REGEXP_REPLACE()
    替换匹配的字符串:

    SELECT REGEXP_REPLACE('hello 123', '[0-9]+', 'world'); -- 结果: 'hello world'
    
  2. REGEXP_SUBSTR()
    提取匹配的子串:

    SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+'); -- 结果: 'abc'
    
  3. REGEXP_INSTR()
    返回匹配的起始位置:

    SELECT REGEXP_INSTR('abc123', '[0-9]+'); -- 结果: 4
    

六、注意事项

  1. 转义特殊字符:使用双反斜杠 \\(如 \\+, \\.)。
  2. 性能优化:避免在大型表上使用 REGEXP,优先考虑全文索引或预处理。
  3. 大小写敏感:如需区分大小写,使用 BINARY 关键字:
    WHERE BINARY column_name REGEXP 'Pattern';
    

经典案例:提取文本中的金额

SELECT REGEXP_SUBSTR(description, '[0-9]+\\.[0-9]{2}') AS amount 
FROM orders 
WHERE description REGEXP '[0-9]+\\.[0-9]{2}';

匹配如 "Price: 99.99 USD" 中的 99.99

相关文章:

  • Web中间件--tomcat学习
  • Python如何给视频添加音频和字幕
  • ui框架-文件上传组件
  • 在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
  • 门静脉高压——治疗
  • 智能体革命:企业如何构建自主决策的AI代理?
  • 魔兽世界正式服插件与宏-敏锐盗贼实用宏探索(1)-宏命令制作入门与基本知识
  • C++--stack和queue的使用及其模拟实现
  • CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
  • 脚本安装Doris2.10和Doris Manager
  • 什么是OLAP?OLAP具体有哪些应用?
  • 前缀和题目:寻找数组的中心下标
  • 使用VMware克隆功能快速搭建集群
  • Linux od命令
  • 火绒弹窗拦截6.0.6.1\5.0.77.1绿色独立版_WinAll
  • 6.9-QT模拟计算器
  • 封装技术生命周期 从CDIP到CSP到SiP先进封装
  • c++学习之路1-安装部署opencv环境c++版本用visual studio
  • LLMs之StructuredOutput:大模型结构化输出的简介、常用方案、前沿框架之详细攻略
  • SSRF由浅入深
  • wordpress发送邮件插件/seo网络营销招聘
  • 常州网站建设方案策划/网址导航推广
  • 中国企业名录黄页/站长工具seo下载
  • 个人做分类信息网站/360安全浏览器
  • 南京做网站团队/石家庄热搜
  • 郑州做网站要/免费网站制作