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

更新数据库所有行时如何获取当前行ID,拆分display_name为姓名列?

拆分display_name更新last_name和first_name的解决方案

你不需要通过子查询借助行ID来获取当前记录的display_name,UPDATE语句在处理每行数据时可以直接引用当前行的字段值,直接简化脚本即可:

基础版本(假设所有目标行的display_name都严格符合‘姓,名’格式)

UPDATE user_profile
SET 
  last_name = split_part(display_name, ',', 1),
  first_name = split_part(display_name, ',', 2)
WHERE last_name IS NULL;

兼容格式不统一的版本(处理部分行无逗号的情况)

如果存在display_name没有逗号的异常数据,可以用CASE语句做兼容处理:

UPDATE user_profile
SET 
  last_name = CASE WHEN display_name LIKE '%,%' THEN split_part(display_name, ',', 1) ELSE display_name END,
  first_name = CASE WHEN display_name LIKE '%,%' THEN split_part(display_name, ',', 2) ELSE NULL END
WHERE last_name IS NULL;

说明

  • split_part函数会按指定分隔符(这里是逗号)拆分字符串,第三个参数指定取第几个拆分后的部分。
  • WHERE条件last_name IS NULL确保只更新未设置姓氏的记录,避免重复执行时覆盖已有数据。
  • 不需要嵌套子查询定位行,UPDATE会自动逐行处理符合条件的记录,直接引用当前行的display_name即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57