SQL> select round(123,2),round(123.1,2),round(123.12,2),round(123.456,2) from dual;ROUND(123,2) ROUND(123.1,2) ROUND(123.12,2) ROUND(123.456,2)
------------ -------------- --------------- ----------------
         123          123.1          123.12           123.46

解决方案 »

  1.   

    但是这样返回的是个number型,程序需要返回varchar2型
    to_char()后,就不一样了
    例如:
    输入:0.2   输入就会变为:.2有参数可以限制吗?
      

  2.   

    但是这样返回的是个number型,程序需要返回varchar2型
    to_char()后,就不一样了
    例如:
    输入:0.2   输入就会变为:.2有参数可以限制吗?
      

  3.   

    SELECT to_char('0.2','fm0.0')   FROM  dual |0.2
      

  4.   

    楼上的也不行啊
    例如:
    SELECT to_char('1','fm0.0')   FROM  dual
    结果为:1.0
    而我想要的是1就是说一个数要保留到小数点后两位,同时如果小数点后为0,则不显示
      

  5.   

    SELECT DECODE(SIGN(X-1),-1,LTRIM(TO_CHAR(X,'0.0')),TO_CHAR(X)) FROM DUAL;
    测试:
    SQL> SELECT DECODE(SIGN(1.0-1),-1,LTRIM(TO_CHAR(1.0,'0.0')),TO_CHAR(1.0)) FROM DUAL;DECODE(SIGN(1.0-1),-1,LTRIM(TO
    ------------------------------
    1SQL> SELECT DECODE(SIGN(2.0-1),-1,LTRIM(TO_CHAR(2.0,'0.0')),TO_CHAR(2.0)) FROM DUAL;DECODE(SIGN(2.0-1),-1,LTRIM(TO
    ------------------------------
    2SQL> SELECT DECODE(SIGN(0.2-1),-1,LTRIM(TO_CHAR(0.2,'0.0')),TO_CHAR(0.2)) FROM DUAL;DECODE(SIGN(0.2-1),-1,LTRIM(TO
    ------------------------------
    0.2