现有一SELECT语句,其中一个字段的结果为一比值。现在希望将这个为比值的字段作为百分数展示,并且要求:如果比值为小数,则保留小数点后两位;否则显示整数。目前小弟是用:TO_CHAR(ROUND (Col1 / Col2 * 100,2),'990.00') || '%'来处理的,但是在整数时会显示小数点。不知道各位前辈有没有什么好的处理方法,问题解决立刻结帖,以我的信誉值做保证……谢谢各位了

解决方案 »

  1.   

    SQL> select decode(to_char(mod(10.9,1)),'1','10.9',to_CHAR(ROUND(10.9*100,2),'99990.00')||'%') from dual;DECODE(TO_CHAR(MOD(10.9,1)),'1
    ------------------------------
      1090.00%
      

  2.   

    把上面的10.9换成col1/col2就可以
      

  3.   

    好像不对阿
    SELECT DECODE(TO_CHAR(MOD(10,1)),'1','10',TO_CHAR(ROUND(10*100,2),'99990.00')||'%') FROM dual;
      1000.00%
      

  4.   

    lz
    Col1 / Col21/2   时结果是什么样
    1/1   时结果是什么样
      

  5.   

    SQL> select decode(to_char(mod(10,1)),'0','10',to_CHAR(ROUND(10*100,2),'99990.00')||'%') from dual;DECODE(TO_CHAR(MOD(10,1)),'0',
    ------------------------------
    10
      

  6.   

    SQL> select decode(to_char(mod(10.9,1)),'0','10',to_CHAR(ROUND(10.9*100,2),'99990.00')||'%') from dual;DECODE(TO_CHAR(MOD(10.9,1)),'0
    ------------------------------
      1090.00%
      

  7.   

    我还奇怪呢
    原来是包子手误SELECT DECODE(TO_CHAR(MOD(10,1)),'0',TO_CHAR(10*100) || '%',TO_CHAR(ROUND(10*100,2),'99990.00')||'%') FROM dual;SELECT DECODE(TO_CHAR(MOD(10.1,1)),'0',TO_CHAR(10.1*100) || '%',TO_CHAR(ROUND(10.1*100,2),'99990.00')||'%') FROM dual;
      

  8.   

    哈哈真的是不好意思MOD整数的时候一不小心写成了1,惭愧那:)