Oracle中TO_CHAR格式化小数位数:整数无法显示末尾零的问题
Oracle中TO_CHAR格式化数字保留两位小数的正确方式
你遇到的问题是因为FM修饰符结合.99格式符时,会去掉小数部分末尾的零但保留小数点。要实现整数显示为1800.00、小数保持原有两位的效果,不需要用条件函数,直接调整格式符即可:
将格式符从'FM99990.99'改为'FM9999999990.00'(前面的9可以多写几个,适配不同长度的整数)。
修改后的SQL语句
SELECT to_char(B.TRANSACTION_COST,'FM9999999990.00') TRANSACTION_COST ,B.TRANSACTION_COST TRANS_COST_ORIGINAL FROM CST_ONHAND_V A, CST_ITEM_COST_HISTORY_V B
效果说明
- 整数
1800会输出1800.00 - 小数
123.45会输出123.45 - 一位小数
123.4会输出123.40
原理:
0表示强制显示该位置的数字(即使是零),所以.00会强制保留两位小数FM修饰符仍可去掉不必要的前导空格,且不会去掉强制显示的零- 前面的多个
9用来适配不同长度的整数,若数据长度超出9的数量会显示#,可根据实际情况增加9的数量
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

