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

如何使用substring从单列中拆分提取Internal ID和External ID两列

拆分固定格式字符串为两列的实现方案

你的Comment列格式高度固定,可通过substring搭配字符串定位函数实现拆分,不同数据库的定位函数名称略有差异,以下是主流数据库的实现代码:

MySQL 实现

MySQL使用LOCATE()函数定位子串位置:

SELECT
  -- 截取Internal ID区间
  SUBSTRING(
    Comment,
    LOCATE('Internal message ID: ', Comment) + LENGTH('Internal message ID: '),
    LOCATE(' External message ID: ', Comment) - (LOCATE('Internal message ID: ', Comment) + LENGTH('Internal message ID: '))
  ) AS `Internal ID`,
  -- 截取External ID从指定位置到末尾
  SUBSTRING(
    Comment,
    LOCATE('External message ID: ', Comment) + LENGTH('External message ID: ')
  ) AS `External ID`
FROM 你的表名;

PostgreSQL 实现

PostgreSQL使用STRPOS()函数定位子串位置:

SELECT
  SUBSTRING(
    "Comment",
    STRPOS("Comment", 'Internal message ID: ') + LENGTH('Internal message ID: '),
    STRPOS("Comment", ' External message ID: ') - (STRPOS("Comment", 'Internal message ID: ') + LENGTH('Internal message ID: '))
  ) AS "Internal ID",
  SUBSTRING(
    "Comment",
    STRPOS("Comment", 'External message ID: ') + LENGTH('External message ID: ')
  ) AS "External ID"
FROM 你的表名;

SQL Server 实现

SQL Server使用CHARINDEX()函数定位子串位置:

SELECT
  SUBSTRING(
    Comment,
    CHARINDEX('Internal message ID: ', Comment) + LEN('Internal message ID: '),
    CHARINDEX(' External message ID: ', Comment) - (CHARINDEX('Internal message ID: ', Comment) + LEN('Internal message ID: '))
  ) AS [Internal ID],
  SUBSTRING(
    Comment,
    CHARINDEX('External message ID: ', Comment) + LEN('External message ID: '),
    LEN(Comment)
  ) AS [External ID]
FROM 你的表名;

如果需要持久化存储拆分结果,可先给原表新增两个字段,再用上述逻辑执行UPDATE更新数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:24:04