问题环境:数据库ORACLE,表字段NUMBER类型 
当我在存储过程中,从某表NUMBER字段取出小于1大于-1的小数时(如0.8或-0.8),总是取出舍弃了小数点前的零的结果即.8或-.8,好像只显示了有效数字,请问各路高手,用什么方法能取得完整结果即0.8或-0.8.除了小于1大于-1的小数以外其它范围的数取值正常(如-1.5,23.45),所以方法不要影响到其它数据的取值结果。
小弟先谢过各路高手了

解决方案 »

  1.   

    比如 SELECT -0.06 FROM DUAL 在存储过程中得到的就是-.06我想要-0.06,其它范围值都能正常取
      

  2.   

    --------------------------------------------------------------
    您好,我们是“2006中国杰出数据库工程师评选”活动组委会。
    您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
    http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选终选的30位数据库工程师将与您展开积极的互动。他们会为您的问题提供满意的答案,此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
    http://www.bestdba.cn/match_discussion3.aspx?pointid=503&pointid2=1&pointid3=5&pcount=stc非常感谢您对本次活动的支持!
    --------------------------------------------------------------
      

  3.   

    你可以格式化以下
    select to_char(0.8,'fm999999990.000') fm from dual
    FM            
    --------------
    0.800         
    1 row selected
      

  4.   

    实在不行自己写个函数吧,虽然有点罗!
    create or replace function FillZero(p_source in NUMBER) return VARCHAR2 is
      Result varchar2(255);
    begin
      Result := to_char(p_source);
      
      if SubStr(Trim(Result),1,1) = '.' then
         Result := '0'||Result;
      elsif SubStr(Trim(Result),1,1) = '-' and SubStr(Trim(Result),2,1) = '.' then
         Result := '-0'||SubStr(Trim(Result),2);
      end if;  return(Result);
    end FillZero;
      

  5.   

    多谢南极漂雪
    格式fm999999990.00 为什么小数点前有个0呢,要都是9呢,有什么区别
    select to_char(900.00,'fm99999999.99') from dual
    我这样写了,结果是900.多个点,怎么处理呢?
      

  6.   

    我试了一下,0和9好像没有什么区别的啊,要是你想得到的是900那么你的格式fmXXX串就不要加小数点后面的数字就好了啊就不会有.了啊(对了小数点也要去掉的啊)
      

  7.   

    可是索取字段是NUMBER(12,2)类型的,不光是整数,还有小数
    需要的效果是
    11.00  11
    11.10  11.1 (最好)
    0.09   0.09
    0.80   0.8 (最好)
    0.00   0
    为什么ORACLE的存储过程取NUMBER时里要省略了小数点前的0呢,不能灵活设置,真麻烦