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