我试图根据字段长度和小数长度,使用填充零和下面定义的更多条件获得所需的输出。我已经达到了解决方案的一部分但并非完全。这是我的要求。
对于给定数字179.237,在输出中我希望总长度为12,只有2个小数位。还必须删除小数点。
给定输入(样本但可以是任意长度):
179.237
预期输出(总长度12,结尾处有2位小数,即要删除的截断和小数点):
000000017923
同时,如果给定的数字具有较少的十进制值或没有(例如:179.2,我应该得到如下输出(右边填充零)。
000000017920
我的代码:
SELECT LPAD(TRIM(RPAD(TO_CHAR(TO_NUMBER(REPLACE(179.237,'.')),9999999999.00),12)),12,'0') from dual;
我的输出:
000000179237
所以我想我错过了截断部分。另外请告知我是否可以简化此代码,因为我的功能太多了。非常感谢。
答案 0 :(得分:2)
乘以100然后TRUNC
ate删除任何剩余的小数,并使用格式为掩码TO_CHAR
的{{1}}:
000000000000
<强>输出强>:
SELECT TO_CHAR(TRUNC(179.237*100),'000000000000') AS VALUE
FROM DUAL;