PLSQL:使用截断

时间:2017-03-25 21:23:03

标签: oracle plsql padding truncate

我试图根据字段长度和小数长度,使用填充零和下面定义的更多条件获得所需的输出。我已经达到了解决方案的一部分但并非完全。这是我的要求。

对于给定数字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

所以我想我错过了截断部分。另外请告知我是否可以简化此代码,因为我的功能太多了。非常感谢。

1 个答案:

答案 0 :(得分:2)

乘以100然后TRUNC ate删除任何剩余的小数,并使用格式为掩码TO_CHAR的{​​{1}}:

000000000000

<强>输出

SELECT TO_CHAR(TRUNC(179.237*100),'000000000000') AS VALUE
FROM   DUAL;