同一Oracle表内数据迁移:字段映射与值转换能否单脚本实现?
Oracle单条UPDATE脚本完成多列数据更新
完全可以通过单条UPDATE语句完成你描述的所有操作,不需要拆分多条脚本。以下是具体的实现代码:
UPDATE your_table_name SET USERNAME = USERID, OLD_COL = CASE WHEN OLD_COL = 'Data 1' THEN 'DATA1' WHEN OLD_COL = 'Data 2' THEN 'DATA2' ELSE OLD_COL -- 保持其他值不变 END;
逻辑说明:
- 在
SET子句中同时处理两个列的更新:将USERID的值直接赋值给USERNAME,用CASE表达式对OLD_COL按规则转换 - 对于
OLD_COL中不符合指定条件的行,通过ELSE OLD_COL保留原有值,确保其他数据不受影响 - 未在
SET子句中提及的列,数据会自动保留,无需额外处理
执行UPDATE前建议先通过SELECT语句验证转换逻辑是否符合预期,比如:
SELECT USERID, USERNAME, OLD_COL, CASE WHEN OLD_COL = 'Data 1' THEN 'DATA1' WHEN OLD_COL = 'Data 2' THEN 'DATA2' ELSE OLD_COL END AS NEW_OLD_COL FROM your_table_name;
内容的提问来源于stack exchange,提问作者copenndthagen
相关产品推荐
相关产品推荐

