我要实现如下功能:
将数值通过“,”分格符格式化。
例如
1234格式化为:1,234,
1234.5格式化为:1,234.5该数值有可能是整数有可能是小数。如果用to_char(num,999,999)这种方法的话,无法将1234.5格式化成1,234.5.
如果用to_char(num,999,999.99)格式式,将1234格式化后会变成123,4.00。
而我现在要实现的功能是,如果是整数格式时化不要出现小数部分,只有带小数的格式化时才需要小数部分请各位大虾帮忙解决一下。

解决方案 »

  1.   

    SQL> select trim(rtrim(rtrim(to_char(1234.5,'999,990.0000'),'0'),'.')) from dual;TRIM(RTRIM(RT
    -------------
    1,234.5SQL> select trim(rtrim(rtrim(to_char(1234,'999,990.0000'),'0'),'.')) from dual;TRIM(RTRIM(RT
    -------------
    1,234
      

  2.   

    谢谢1楼的回复。用 rtrim去掉后面的“.”就可以了,不过里面格式化时,rtrim 0 的方法可以用fm来代替。
    2,3楼的这种做法我是知道的。只不过当NUM为整数而不是小数时,Format后,数值后面会有一个小数点。而我想要的结果显然不是这样的。
    不过也谢谢你们的关注。