使用的是sqlplus吗?看看你的numformat设置是否是默认的!

解决方案 »

  1.   

    SQL> select 0.123+3.129 from dual;0.123+3.129
    -----------
          3.252SQL> set numformat 0.0000
    SQL>  select 0.123+3.129 from dual;0.123+3.129
    -----------
         3.2520
      

  2.   

    SQL> SET NUMFORMAT 00000000.00SQL> SELECT SUM(ANUM) FROM T1 
      2  /   SUM(ANUM)
    ------------
     10001000.99
      

  3.   

    并不是在sqlplus里运行,而是写程序做帐票时,各项的值和合计值不一致,
    原因就是合计我用sum来做的。
    而且运行set numformat 0.0000时
    会报“Cannot SET NUMFORMAT“错。
      

  4.   

    select trim(to_char(sum(bi_sum),'99999999999.99')) as bi_sum from t1
      

  5.   

    select trim(to_char(sum(bi_sum),'99999999999.99')) as bi_sum from t1
    结果还是10001001。
    更正一个地方,字段ANUM  是number(16,2)
    好像位数也有关系,number(14,2)的时候就每这问题
      

  6.   

    我的也是number(16,2) 啊
    或者你先在SQL/PL设置
     NUMFORMAT 的值 位00000000.00
      

  7.   

    回复人: cecilianet(青苹果) 
       我的也是number(16,2) 啊
    或者你先在SQL/PL设置
     NUMFORMAT 的值 位00000000.00
      
    你可以吗?我设过还是不行
     
      

  8.   

    楼主请参看以下同个语句,你就会明白了:
    SQL> desc t_sumnum;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ---------------------------- ANUM                                               NUMBER(16,2)SQL> select * from t_sumnum;      ANUM
    ----------
      10000001
          1000SQL> select to_char(anum,'9999999999999999.99') from t_sumnum;TO_CHAR(ANUM,'999999
    --------------------
             10000000.99
                 1000.00SQL> select sum(anum) from t_sumnum; SUM(ANUM)
    ----------
      10001001SQL> select to_char(sum(anum),'9999999999999999.99') from t_sumnum;TO_CHAR(SUM(ANUM),'9
    --------------------
             10001000.99
    从上面语句可以看出,sum函数本身并没有问题,只是oracle本身在显示sum结果的时候按照 NUMFORMAT 参数来显示结果了,所以只需对sum结果进行格式化即可