Oracle 19c如何给指定整数添加小数点存入NUMBER列?
Oracle 19c 整数格式字符串转指定小数格式的简便方案
需求说明
需要将固定长度的整数字符串(如000036720这类带前导零的9位字符串)转换为小数点后两位的数值,存入NUMBER列,替代繁琐的SUBSTR截取方法。
简便实现方法
核心思路:这些整数字符串本质是目标数值乘以100后的结果,直接通过数值运算即可完成转换,无需字符串截取。
1. 转换并插入NUMBER列
假设原始数据存储在字符串字段str_num中,执行以下SQL即可将转换后的值存入NUMBER列:
INSERT INTO target_table (decimal_col) SELECT TO_NUMBER(str_num) / 100 FROM source_table;
NUMBER类型会自动保留数值精度,无需额外处理即可存储正确的小数。
2. 查询时格式化显示为两位小数
如果需要查询结果直接显示为367.20这类带两位小数的格式,可搭配TO_CHAR的格式掩码:
SELECT TO_CHAR(TO_NUMBER(str_num)/100, 'FM9999999.00') AS formatted_value FROM source_table;
FM前缀用于去除数值前的多余空格.00强制保留两位小数,即使末尾是0也会显示
效果验证
用测试数据执行上述SQL,会得到完全符合期望的结果:
| 原始字符串 | 转换后数值 | 格式化显示 |
|---|---|---|
| 000036720 | 367.20 | 367.20 |
| 000008425 | 84.25 | 84.25 |
| 000754070 | 7540.70 | 7540.70 |
| 000086640 | 866.40 | 866.40 |
| 000001645 | 16.45 | 16.45 |
内容的提问来源于stack exchange,提问作者epipko
相关产品推荐
相关产品推荐

