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

MySQL 8中SELECT提取文本列内各段指定前缀的技术问询

MySQL 8 提取codes表中标识串并逗号分隔输出

针对codes表desc字段中用<Br>分隔、格式为「标识串 - 描述内容」的字符串,我们可以利用MySQL 8的JSON_TABLE函数结合字符串处理函数实现需求,具体SQL语句如下:

SELECT 
    id, 
    GROUP_CONCAT(TRIM(SUBSTRING_INDEX(item, ' - ', 1)) SEPARATOR ', ') AS extracted_codes
FROM 
    codes,
    JSON_TABLE(
        -- 将<Br>分隔的字符串转换为JSON数组格式
        CONCAT('["', REPLACE(desc, '<Br>', '","'), '"]'),
        '$[*]' COLUMNS(item TEXT PATH '$')
    ) AS split_items
GROUP BY id;

语句说明:

  • 拆分字符串:通过REPLACE(desc, '<Br>', '","')把<Br>替换为",",再用CONCAT包裹成JSON数组格式,让JSON_TABLE可以将每个子串拆分为单独的行。
  • 提取标识串:对每个拆分后的子串,用SUBSTRING_INDEX(item, ' - ', 1)截取-之前的部分,TRIM确保结果没有多余空格。
  • 合并结果:用GROUP_CONCAT将同一id下的所有标识串用, 连接,得到最终的逗号分隔格式。

执行上述语句后,示例数据的输出将与期望结果完全一致:

id | extracted_codes
---|-------------------------------
1  | 423.9, 511.9, 486, 42.a.7.31, 785.0
2  | 428.0M
3  | E.423.9, 511.9

内容的提问来源于stack exchange,提问作者Darren Gates

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:12:43