在Oracle中如何移除列值的逗号与小数部分后更新对应数据
Oracle带千位分隔符数值格式列转换更新方案
你当前存储的是带千位逗号分隔的浮点格式值,要转换为四舍五入后的整数,可按以下步骤操作:
1. 先验证转换逻辑(必须先执行,避免错误更新数据)
执行SELECT语句测试转换效果,确认和预期结果一致再进行更新:
SELECT ROUND(TO_NUMBER(你的列名, '999G999G999D99')) AS 转换后值 FROM 你的表名;
参数说明:
TO_NUMBER格式符中G对应千位分隔符逗号,D对应小数点,完美适配你给出的6,983.80这类格式ROUND默认保留0位小数,正好实现需求的四舍五入规则:6,983.80转换为6984、12,287.73转换为12288、6,977.00转换为6977,完全匹配目标结果。
2. 执行更新操作
建议开启事务操作,确认结果无误后再提交,避免不可逆的错误:
-- 如果目标列是数值类型,直接执行更新 UPDATE 你的表名 SET 你的列名 = ROUND(TO_NUMBER(你的列名, '999G999G999D99')); -- 如果目标列是字符串类型,需要把转换后的整数转回字符串 UPDATE 你的表名 SET 你的列名 = TO_CHAR(ROUND(TO_NUMBER(你的列名, '999G999G999D99'))); -- 确认更新结果符合预期后执行提交 COMMIT; -- 如果结果有误可执行回滚:ROLLBACK;
注意事项
如果你的存储值最大长度超过当前格式符范围,可按需扩展格式符中9的个数,比如十亿级数值可调整为999G999G999G999D99。
内容的提问来源于stack exchange,提问作者Nadeem
相关产品推荐
相关产品推荐

