我的数据库中有一个字段下都是小数,而这些小数如果为0.n时,就会自动省略前面的0
我现在为了将0加上去,用了to_char(M_value,'fm999999990.99')
这样可以处理比较大的数字
但是还是有问题,我后来查了一下数据中最大最小的数字,分别为
9.9E+37和-9.25596E+61这样的话,对于M_value的表示,用我写的to_char的方法有时会显示为######,应该如何改善写法?
请大家帮忙,我提取数据出来类型可以不用为数字,只要显示正确就好.

解决方案 »

  1.   

    比如0.5这个小数,在数据库中显示的是.5
    我用to_char(M_value,'fm999999990.99')可以将.5转换为0.5,但是遇到很大或者很小的数字时就会出错,显示########,应该如何修改表示?
      

  2.   

    增加一个判断不可以吗?像
    case when M_value<1 then to_char(M_value,'999999990.99') else M_value end
      

  3.   

    'fm999999990.99' 变长试试'fm99999999999999999999999999999999990.999999999999999'
      

  4.   

    不好意思,想问一下,如果不用Case When,用Decode能否实现在其中使用like?
      

  5.   

    decode只能实现有确定值的,类似:CASE A WHEN B THEN ...
    而不能实现:CASE WHEN A THEN B...另:楼主头像不错
      

  6.   

    经过3L的提示最终做出这样的:
    rtrim(decode(sign(abs(m_value)-1),-1,to_char(M_value,'fm0.99'),m_value),'.')
    用rtrim是为了将0.转换为0