一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

mysql正则函数REGEXP使用与说明

时间:2026-07-26 16:18:02 编辑:袖梨 来源:一聚教程网

在 MySQL 中,REGEXP 是用于‌正则表达式模式匹配‌的操作符,其功能与 RLIKE 相同。

mysql正则函数REGEXP使用及说明

从 MySQL 8.0 开始,还引入了更规范的函数形式如 REGEXP_LIKE()、REGEXP_SUBSTR()、REGEXP_REPLACE() 等,增强了正则处理能力。

核心要点‌

基本语法‌

column_name REGEXP ‘pattern’:返回 1(匹配)或 0(不匹配)。

默认‌不区分大小写‌,但受字段排序规则(collation)影响;若需区分大小写,可使用 BINARY 或 REGEXP_LIKE(…, ‘c’)。

支持的元字符与量词‌(基于 Henry Spencer 正则库,POSIX ERE 子集):

^、$、.、*、+、?、[]、|、{n}、{n,}、{n,m}

不支持‌ d、w、s 等 Perl 风格简写,应分别用 [0-9]、[a-zA-Z0-9]、[[:space:]] 替代。

版本差异‌

‌MySQL 5.7 及以下‌:仅支持基本 POSIX BRE,部分语法(如 +、?)需转义或改用 {1,}、{0,1}。

‌MySQL 8.0+‌:采用 ICU 引擎,支持更多 POSIX ERE 特性,推荐使用 REGEXP_LIKE() 等函数以提高可读性和控制力。

常用函数与示例

‌REGEXP_LIKE()(MySQL 8.0+)

SELECT * FROM users WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', 'c');

REGEXP_SUBSTR()(MySQL 8.0+)‌

提取首次匹配的子串

SELECT REGEXP_SUBSTR('user_123_order_456', '[0-9]+', 1, 1); -- 返回 '123'

REGEXP_REPLACE()(MySQL 8.0+)‌

替换匹配内容

SELECT REGEXP_REPLACE('abc123def', '[0-9]+', ''); -- 返回 'abcdef'

REGEXP_INSTR()(MySQL 8.0+)‌

返回匹配位置(从 1 开始)

SELECT REGEXP_INSTR('dog cat dog', 'dog'); -- 返回 1SELECT REGEXP_INSTR('dog cat dog', 'dog', 2); -- 返回 9(从第2个字符开始找第二次匹配)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

您可能感兴趣的文章:
  • MYSQL中REGEXP的实现示例
  • MySQL regexp 命令详解
  • mysql regexp匹配多个字符串实现
  • mysql查询FIND_IN_SET REGEXP实践示例
  • MYSQL 高级文本查询之regexp_like和REGEXP详解
  • Mysql中正则表达式Regexp常见用法及说明
  • MySQL正则表达式regexp_replace函数的用法实例

热门栏目