You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7中如何截取列值中的指定子串?

在MySQL 5.7中去除gruppo-\d+_前缀的实现方法

因为MySQL 5.7没有REGEXP_REPLACE,但可以用内置的字符串函数或正则函数实现需求,分两种场景给出方案:

场景1:所有字符串严格符合gruppo-数字_开头格式

如果你的数据都是标准格式,直接用LOCATE和SUBSTRING组合即可,效率更高:

SELECT SUBSTRING(your_column, LOCATE('_', your_column) + 1) AS extracted_text
FROM your_table;

原理:LOCATE('_', your_column)找到第一个下划线的位置(也就是数字后的下划线),从该位置的下一位开始截取,就能得到后面的内容。

场景2:需要兼容非标准格式(部分字符串不匹配前缀)

如果存在不符合格式的字符串,需要保留原内容,可以结合正则判断和REGEXP_INSTR实现:

SELECT 
  CASE 
    WHEN your_column REGEXP '^gruppo-[0-9]+_' 
    THEN SUBSTRING(your_column, REGEXP_INSTR(your_column, '^gruppo-[0-9]+_', 1, 1, 1) + 1)
    ELSE your_column
  END AS extracted_text
FROM your_table;

也可以用REGEXP_SUBSTR直接提取捕获组内容,写法更简洁:

SELECT REGEXP_SUBSTR(your_column, '^gruppo-[0-9]+_(.*)$', 1, 1, '', 1) AS extracted_text
FROM your_table;

原理:正则表达式中的(.*)捕获前缀后的所有内容,通过REGEXP_SUBSTR的第6个参数指定提取第一个捕获组的结果。

内容的提问来源于stack exchange,提问作者Luca Reghellin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:32:51