本帖最后由 monday707455915 于 2013-09-02 14:27:25 编辑

解决方案 »

  1.   

    玛德,找到答案了,是后面的格式串指定不对,
    1.‘099’中0表示对应的某一个指定位数的值,如果是值是0则显示为0,如果是没有值也显示为0。在这里估计是变量的位数不止3位,然后前面的空格都转换成了0,就是不知道为什么我偶在debug的时候看他运行过程中的值没什么异常,也没在前面显示一大堆0 
    2.‘FM099’,FM表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。总结:问题解决,原因不是很清楚,先干活吧,唉
      

  2.   

    如果你确认输入参数固定是3位长的话应该木有问题,butselect to_char(to_number('5'),   '099') b from dual;
    select to_char(to_number('05'),  '099') b from dual;
    select to_char(to_number('005'), '099') b from dual;看看上面这三句的区别就明白了!
      

  3.   

    大神您说错了, to_number()无论里面的参数前面有几个零,返回的结果都是只保留后面的有效数字,所以这三行代码的结果肯定是一样的(我试过)。我感觉应该尝试以下三行代码,有代表性一点:select to_char('     5', '999') from dual 
    --output:  5     前面无论多少位空格,都只显示两个前空格、一位数字。
    select to_char('     5', '099') from dual                
    --output: 005    前面无论多少位空格,都只显示两位0,一位数字,
    --但是在零的前面还会存在一个空格,不知何理。
    select to_char('     5', 'FM099') from dual              
    --output:005     前面无论多少位空格,都只显示两位0,一位数字,前面没有空格。
    您的回答给了我启发,给分!
      

  4.   

    什么理解能力啊你!!!???
    select to_char(to_number('5'),   '099') b from dual;
    输入是'5',输出是'005'select to_char(to_number('05'),  '099') b from dual;
    输入是'05',输出是'005'select to_char(to_number('005'), '099') b from dual;
    输入是'005',输出是'005'这三种情况能是一样的么???!!!
    顺带说一嘴,不知道别人怎么样,我很烦那种上来就说“你错了”你没理解或是没有看明白的情况有没有排除掉啊,
    上来就给别人扣上个大帽子,你当自己是谁啊,你那么nb还用上来提问么!?说这种话还是要谨慎谨慎再谨慎,其实最好是压根就别说!!!