to_char(t.salary/1000,'9,999,999.9999')
当t.salary/10000 能够整除时,则割舍掉小数点后的0
当有一位有效小数时显示   .x
以此类推:.xx
          .xxx
 总之后面无效的0去掉。
求教各位这SQL语句怎么写

解决方案 »

  1.   

    这个还真没遇到过,为什么得to_char()呢?
    看看高人的手段。
      

  2.   

    既然不保存多余的0
    还要转格式干嘛
    直接t.salary/1000
    或者最多保留4位小数round(t.salary/1000)
      

  3.   

    当你使用了to_char(t.salary/1000,'9,999,999.9999')
    这种格式就表示无论t.salary/1000的到的是几位小数,都会帮你转换成4位小数。
    你的需求不需要使用to_char函数
      

  4.   


    select 
    case when right(to_char(t.salary/1000,'9,999,999.9999'),4)='0000' then left(to_char(t.salary/1000,'9,999,999.9999'),9)
      when right(to_char(t.salary/1000,'9,999,999.9999'),3)='000' then left(to_char(t.salary/1000,'9,999,999.9999'),11)
        when right(to_char(t.salary/1000,'9,999,999.9999'),2)='00' then left(to_char(t.salary/1000,'9,999,999.9999'),12)
           when right(to_char(t.salary/1000,'9,999,999.9999'),1)='0' then left(to_char(t.salary/1000,'9,999,999.9999'),13)
             else to_char(t.salary/1000,'9,999,999.9999') end  as salary
     from tb
      

  5.   

    要是没有自己写的 left  right函数 就这样select case when substr(to_char(t.salary/1000,'9,999,999.9999'),11,4)='0000' then substr(to_char(t.salary/1000,'9,999,999.9999'),1,9) when substr(to_char(t.salary/1000,'9,999,999.9999'),12,3)='000' then substr(to_char(t.salary/1000,'9,999,999.9999'),1,11) when substr(to_char(t.salary/1000,'9,999,999.9999'),13,2)='00' then substr(to_char(t.salary/1000,'9,999,999.9999'),1,12) when 
    substr(to_char(t.salary/1000,'9,999,999.9999'),14,1)='0' then substr(to_char(t.salary/1000,'9,999,999.9999'),1,13) 
    else to_char(t.salary/1000,'9,999,999.9999') end as salary 
    from tb 
      

  6.   

    直接 t.salary/10000 就可以了,不需要用to_char的
      

  7.   


    是啊,如果需要限定小数位数,用trunc函数,如trunc(2345678/1000,2)
      

  8.   

    select case when t.salary/10000 <1 then '0'||to_char(  t.salary/10000 )  else 
    ''||to_char(  t.salary/10000 ) end  aa  from TABLE_NAME
    看看这个是你要得结果吗?
      

  9.   

    蛋疼,难道有20个小数你也显示.XXXXXXXXXXXX这样的啊,肯定要有一个约定的格式的嘛!
      

  10.   

    rtrim(to_char(t.sal/1000,'9,999,999.9999'),'0')