oracle sql 查询 将varchar类型转换为数字类型 精确到小数点后两位select to_number('123.00','99d00')  ...  不管用

解决方案 »

  1.   

    select to_number('123.00') from dual;select ROUND(to_number('123.00'),2) from dual;
      

  2.   

    select round('123,032',2) from dual
    oracle小数点后全是0的话,默认不显示
      

  3.   

    select ROUND(to_number('123.00'),2) from dual;
    这样可以
      

  4.   


    SQL> col t1 format '999,999,990.99'
    SQL> /             T1
    ---------------
             123.00SQL> select to_number('123.00') t1 from dual
      2  /             T1
    ---------------
             123.00这样小数位为零的话不会显示,只有像上面的这样
      1* select to_number('123.00','999,990.99') t1 from dual
    SQL> /        T1
    ----------
           123
    --小数位不为零的就可以显示
      1* select to_number('123.01','fm99,990.00') from dual
    SQL> /TO_NUMBER('123.01','FM99,990.00')
    ---------------------------------
                               123.01
      

  5.   


    --单独是为了显示也可以这样 得考虑效率  1* select to_char(round('123.0052',2),'fm999,990.00') from dual
    SQL> /TO_CHAR(ROU
    -----------
    123.01SQL> edi
    已写入 file afiedt.buf  1* select to_char(round('123.00',2),'fm999,990.00') from dual
    SQL> /TO_CHAR(ROU
    -----------
    123.00
      

  6.   


     select to_char(round('123.00',2),'fm999,990.00') from dual; --结果保留小数位
     select ROUND(to_number('123.00'),2) from dual;  --结果没有小数位