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

如何将表中fullname列的逗号分隔值拆分后插入对应新列?

解决方法

你之前的问题在于用了INSERT语句——这是用来新增行的,但你需要的是更新现有行的新字段值,而且CTE没有和原表关联,没法对应到正确的行。正确的流程分两步:添加新列,然后用UPDATE批量更新数据。

1. 先添加新列

执行以下语句给test表新增firstname和lastname列(可根据实际需求调整字段长度,比如VARCHAR(100)):

ALTER TABLE test ADD COLUMN firstname VARCHAR;
ALTER TABLE test ADD COLUMN lastname VARCHAR;

2. 拆分并更新数据

直接用UPDATE语句,结合split_part拆分fullname,同时用TRIM去掉拆分后可能带的空格(比如原字段里逗号后的空格):

UPDATE test
SET 
  firstname = TRIM(split_part(fullname, ',', 1)),
  lastname = TRIM(split_part(fullname, ',', 2));

3. 验证结果

执行查询确认数据是否正确拆分:

SELECT fullname, firstname, lastname FROM test;

为什么你的原方法出错?

  • INSERT是插入新记录,不是修改已有行的字段,所以会导致新增无效行(或关联匹配错误)。
  • 你的CTE没有保留原表的唯一标识(比如主键),无法将临时表的拆分结果对应到原表的具体行,WHERE条件里的关联逻辑不成立。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:33:24