由于数据库的字段是别人设计的,没有法子,得转换为我需要的数据格式。
字段是varchar类型,都是数字,例如100045
按照目前开发的系统的定义规则,实际上是1000.45,说白了就是精确到分,
最后两位是分,我想把这个格式转换为100045->1000.45
请问这个怎么转换呢,请各位高手帮我下。

解决方案 »

  1.   

    Select to_number('100045')/100 As s From dual;
    Select round(to_number('100045')/100,2) As s From dual;
      

  2.   


    Select to_number('5')/1000 As s From dual;
    Select round(to_number('5')/1000,2) As s From dual;同2楼,看看区别
      

  3.   

    select to_number('100045')/100 result from dual;/*    RESULT
    ----------
       1000.451 row selected.*/
      

  4.   

    Select to_number('100045')/100 As s From dual;
      

  5.   

    Select to_number('100045')/100 As s From dual;有个弊端 就是比如是100000时候就不会保留小数
    可以再转换一次
    Select to_char(to_number('100000')/100,'9999999999999.99') As s From dual;
      

  6.   


    格式化用 9999999999990.99 吧,这样,当字符串比 100 小的时候,小数点前面的 0 能带出来
    另外,最好使用 trim 函数去除多余的空格
    select trim(to_char(to_number('10000') / 100, '99999999990.99')) as text from dual
     union all
    select trim(to_char(to_number('10') / 100, '99999999990.99')) as text from dualTEXT
    ---------------
    100.00
    0.10
      

  7.   

    Select round(to_number('100045')/100,2) From dual;
      

  8.   

    select to_number('100045')/100 result from dual;
      

  9.   

    SQL> select to_char(to_number('10') / 100, '99999999990.99') as text from dual;TEXT
    ---------------
               0.10
    这样就看了
      

  10.   

    select trim(to_char(to_number('10') / 100, '99999999990.99')) as text from dual
    比较保险