ORDER BY 字段名 DESC
DESC 为降续排列

解决方案 »

  1.   

    多谢参与,我的意思是在默认asc的排序情况下,使结果这样:
    1.102-1
    2.102-2
    3.102-11按照楼上的做法,结果将是这样:
    1.102-2
    2.102-11
    3.102-1而这并不是我想要的结果.
    再次感谢你的参与.
      

  2.   

    抽取"-"后面的字符
    取其ascii,判断是否为数字
    如是,转为数字排序
    不是,不理会
      

  3.   

    多谢参与!
    目前使用这种方法解决有一点问题,那就是要定义一个code的编码规则,然后基于这个规则,可以采用楼上兄弟的方法解决.请问是否有更好的解决办法?再次感谢你的参与!
      

  4.   

    select code from table_test order by to_number(substr(code,7,2));
      

  5.   

    select * from table_name order by substr(code,1,instr(code,'_')-1)||substr(inser(code,'_')+1)其实也不用ascii函数
    select * from table_name order by replace(code,'_','')
      

  6.   

    tcmis(肖锋) , beckhambobo(beckham) 非常感谢你们的参与!
    采用你们的方法是能够解决上述问题,但是前提是code字段的值的编码规则一定,比如xxx-yyy等.
    但是如果另外在有一条数据:102-1a,则不能采用to_number()函数.我想知道的是oracle有没有这样的一种排序机制,即按照字符型排序同时也能够按照字符的多少进行排序.目前我的一个解决办法是这样的:
    1.select max(length(code)) into max_code_length  from table_test;
    2.select code from table_test order by lpad(code,max_code_length,'0')请教大家更好的解决方式.再次感谢tcmis(肖锋) , beckhambobo(beckham)的参与!