Sql 甲骨文编号问题

Sql 甲骨文编号问题,sql,oracle,Sql,Oracle,你好 我有个问题需要你的帮助 客户希望发票金额显示如下: 发票金额示例 -405.12 to be shown as 000000040512 & 下面的查询对于405.12金额可以正常工作,但是对于400.00金额,它会在右侧删除两个0 LPAD(REPLACE((invoiceamt*-1),'.',''),12,0) 我如何解决这个问题 多谢各位 Aaron忘记替换,只需将invoiceamt乘以-100,然后将LPAD乘以所需长度。忘记替换,只需将invoiceamt乘以-100,

你好

我有个问题需要你的帮助

客户希望发票金额显示如下:

发票金额示例

-405.12 to be shown as 000000040512
&

下面的查询对于405.12金额可以正常工作,但是对于400.00金额,它会在右侧删除两个0

LPAD(REPLACE((invoiceamt*-1),'.',''),12,0) 
我如何解决这个问题

多谢各位
Aaron

忘记替换,只需将invoiceamt乘以-100,然后将LPAD乘以所需长度。

忘记替换,只需将invoiceamt乘以-100,然后将LPAD乘以所需长度。

我建议

 to_Char(abs(invoiceamt) * 100, '000000000000')
在哪里

我建议

 to_Char(abs(invoiceamt) * 100, '000000000000')
在哪里

让我想起了:

返回一个乘以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 
让我想起了:

返回一个乘以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 

乘以-100,而不是替换?出于兴趣,如何显示+400.00的发票金额?查询仅返回负数发票,因此+400.00不会以-100的倍数返回,而不是替换?出于兴趣,如何显示+400.00的发票金额?查询仅返回负数发票,因此+400.00不会返回如此简单但如此困难。谢谢你,工作起来很有魅力。很简单但很难。谢谢你,很有魅力。