【问题标题】:PLSQL: Padding numbers and numeric conversion with truncationPLSQL:使用截断填充数字和数字转换
【发布时间】:2017-08-18 17:26:39
【问题描述】:

我正在尝试根据字段长度和十进制长度使用填充零和更多条件获得所需的输出,如下面定义的那样。我已经达到了部分解决方案,但还没有完全解决。这是我的要求。

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

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

【问题讨论】:

    标签: oracle plsql padding truncate


    【解决方案1】:

    乘以 100,然后乘以 TRUNCate 以删除任何剩余的小数,并将 TO_CHAR 与格式掩码 000000000000 一起使用:

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

    输出

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

    【讨论】:

    • 非常感谢您提供的简单解决方案 :)
    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 2020-05-31
    • 2012-04-26
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多