Oracle PLSQL:带截断的填充数字和数字转换

Oracle PLSQL:带截断的填充数字和数字转换,oracle,plsql,padding,truncate,Oracle,Plsql,Padding,Truncate,我正在尝试使用填充的零和下面基于字段长度和十进制长度定义的其他一些条件来获得所需的输出。我已经找到了部分解决方案,但还没有完全解决。这是我的要求 对于给定的数字179.237,在输出中,我希望总长度为12,只有2个十进制位置。此外,还必须删除小数点 给定输入(示例,但可以是任意长度): 预期输出(总长度12,末尾有2个小数点,即截断和小数点被删除): 同时,如果给定的数字具有较少的十进制值或无十进制值(对于ex:179.2,我应该得到如下输出(右填充零) 我的代码: SELECT LPAD(TR

我正在尝试使用填充的零和下面基于字段长度和十进制长度定义的其他一些条件来获得所需的输出。我已经找到了部分解决方案,但还没有完全解决。这是我的要求

对于给定的数字179.237,在输出中,我希望总长度为12,只有2个十进制位置。此外,还必须删除小数点

给定输入(示例,但可以是任意长度):

预期输出(总长度12,末尾有2个小数点,即截断和小数点被删除):

同时,如果给定的数字具有较少的十进制值或无十进制值(对于ex:179.2,我应该得到如下输出(右填充零)

我的代码:

SELECT LPAD(TRIM(RPAD(TO_CHAR(TO_NUMBER(REPLACE(179.237,'.')),9999999999.00),12)),12,'0') from dual;
000000179237
我的输出:

SELECT LPAD(TRIM(RPAD(TO_CHAR(TO_NUMBER(REPLACE(179.237,'.')),9999999999.00),12)),12,'0') from dual;
000000179237

因此,我想我错过了这篇文章中的截断部分。另外,请告知此代码是否可以简化,因为我有太多的函数。非常感谢。

乘以100,然后
TRUNC
ate删除所有剩余的小数,并使用
to_CHAR
和格式掩码
000000000000000000

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

VALUE
------------
000000017923

乘以100,然后使用
TRUNC
ate删除所有剩余的小数,并使用
to_CHAR
和格式掩码
000000000000

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

VALUE
------------
000000017923

非常感谢您提供的简单解决方案:)非常感谢您提供的简单解决方案:)