早安,
我有一个问题可以帮助您。
客户希望发票金额显示如下:
示例发票金额
-405.12 to be shown as 000000040512
&
-400.00 to be shown as 000000040000
以下查询适用于405.12的金额,但对于400.00的金额,它会在右侧删除两个零
LPAD(REPLACE((invoiceamt*-1),'.',''),12,0)
我该如何解决这个问题?
谢谢 亚伦
答案 0 :(得分:7)
我建议
to_Char(abs(invoiceamt) * 100, '000000000000')
其中
abs - absolute value - get rid of sign (-)
* 100 - removing decimal point
to_Char - final formatting (12 mandatory digits)
答案 1 :(得分:2)
忘记替换,只需将发票乘以-100,然后将LPAD乘以所需的长度即可。
答案 2 :(得分:0)
Another question让我想起了the V
format model element的存在:
返回一个乘以10 ^ n 的值(如有必要,将其四舍五入),其中 n 是
V
之后的9的数目。
但是您可以使用零而不是9来保持前导零,并添加FM
来删除前导空格(对于-负值符号,您将没有该空格)。因此,您也可以这样做:
with t (n) as (
select -405.12 from dual
union all select -400 from dual
)
select n, to_char(abs(n), 'FM0000000000V00') as result
from t;
N RESULT
---------- -------------
-405.12 000000040512
-400 000000040000