表中的某字段是字符串类型(oracle),记录的是如: 96.23%   12.34%  8.76%  100% 不完整   等的数据 要求现在查询出来的记录根据 这个字段排序  不完整的拍到最后面  百分比大的排在前面   如何写sql

解决方案 »

  1.   

    SQL> select * from testt;
     
    A
    ----------
    90%
    40%
    10%
    30%
    50%
     
    SQL> 
    SQL> SELECT * FROM testt
      2  ORDER BY to_number(replace(a,'%',''))
      3  desc;
     
    A
    ----------
    90%
    50%
    40%
    30%
    10%
     
    SQL> 
      

  2.   


    --先将不完整转换成0%,然后去掉%排序
    select * from test 
    order by
     to_number(replace(decode(recode,'不完整','0%',recode),'%','')) desc
      

  3.   

    SELECT TO_NUMBER(REPLACE('99.88%','%','')) TONUMBER FROM DUAL
    ORDER BY TONUMBER
      

  4.   

    ORDER BY to_number(nvl(replace(decode(fld1,'不完整',0,fld1),'%',''),0)) desc
      

  5.   

    e,还一个不完整啊
    SELECT * FROM testt
        ORDER BY to_number(translate(a,'²»ÍêÕû%',''))
        desc;
      

  6.   

    SELECT * FROM testt
      ORDER BY to_number(translate(a,'不完整%',''))
      desc;