mysql中regexp_substr函数的使用

mysql 8.0及以上版本支持REGEXP_SUBSTR函数,用于提取匹配正则的子串。语法为REGEXP_SUBSTR(str, pattern, pos, occurrence, match_type),可指定起始位置和匹配次数。示例包括提取数字、邮箱、括号内容及特定前缀后的值,适用于文本清洗与数据提取场景。

mysql中regexp_substr函数的使用

MySQL 在 8.0 版本之后才引入了 REGEXP_SUBSTR 函数,用于从字符串中提取匹配正则表达式的子串。如果你使用的是 MySQL 8.0 或更高版本,就可以使用这个函数来实现灵活的文本提取。

基本语法

REGEXP_SUBSTR(str, pattern) 返回在字符串 str 中第一个匹配正则表达式 pattern 的子串。如果没有匹配项,则返回 NULL

常见用法示例

1. 提取数字 从字符串中提取连续的数字:

select REGEXP_SUBSTR(‘订单编号:12345,金额:678’, ‘[0-9]+’); 结果:12345(提取第一个数字序列)

2. 提取邮箱地址 假设字段包含一段文本,想提取其中的邮箱:

SELECT REGEXP_SUBSTR(‘联系方式:admin@example.com,电话:12345’, ‘[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}’); 结果:admin@example.com

3. 提取括号内的内容 提取圆括号中的文字:

SELECT REGEXP_SUBSTR(‘这是测试(内部内容)示例’, ‘([^)]+)’); 结果:(内部内容) 若想去掉括号,可结合其他函数处理。

4. 提取特定前缀后的值 比如提取 “ID:” 后面的数字:

SELECT REGEXP_SUBSTR(‘用户ID:98765,状态:激活’, ‘ID:[0-9]+’); 结果:ID:98765 进一步提取纯数字可写成:
SELECT REGEXP_SUBSTR(‘用户ID:98765,状态:激活’, ‘[0-9]+’, 1, 2); 这里第四个参数表示“第二次出现”,因为第一个数字可能是前面的编号。

支持起始位置和匹配次序(MySQL 8.0.4+)

REGEXP_SUBSTR(str, pattern, pos, occurrence, match_type)pos:开始搜索的位置(默认为1) – occurrence:第几次匹配(默认为1) – match_type:匹配模式,如 ‘i’ 不区分大小写,’c’ 区分大小写,’m’ 多行模式等

示例:跳过第一个数字,提取第二个:

mysql中regexp_substr函数的使用

SpeakingPass-打造你的专属雅思口语语料

使用chatGPT帮你快速备考雅思口语,提升分数

mysql中regexp_substr函数的使用25

查看详情 mysql中regexp_substr函数的使用

SELECT REGEXP_SUBSTR(‘价格:100元,数量:5个’, ‘[0-9]+’, 1, 2); 结果:5

注意事项

– 该函数在 MySQL 5.7 及更早版本中不可用。如果需要类似功能,可通过存储函数或程序端处理模拟。 – 正则表达式不支持所有 PCRE 特性,使用时需遵循 MySQL 的正则语法(基于 Henry Spencer 的正则库)。 – 若提取结果可能为空,建议配合 IFNULL 处理 NULL 值。

基本上就这些。合理使用 REGEXP_SUBSTR 能大幅提升文本数据清洗和提取效率,特别是在日志分析、数据导入等场景中非常实用。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources