我正在尝试获得带有填充零和更多条件的所需输出,如下所示,具体取决于字段长度和十进制长度。我已经达到了部分解决方案,但尚未完全解决。以下是我的要求。
对于给定的数字 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
所以我想我错过了其中的截断部分。另外,请告知是否可以简化此代码,因为我的功能太多了。非常感谢。
100 然后TRUNC
吃以删除任何剩余的小数,并将 TO_CHAR
与格式掩码一起使用 000000000000
:
SELECT TO_CHAR(TRUNC(179.237*100),'000000000000') AS VALUE
FROM DUAL;
输出:
VALUE
------------
000000017923