数据库表中有name字段的值为ext1,ext2,ext3.....,ext10,ext11,我想排序的时候根据ext1,ext2,ext3...,ext10,ext11这样排,不过我order by name 时,排列的顺序是ext10,ext11,....ext1,ext20...ext2这样排列的,我想截取字段的长度然后排列,该怎么排序?我要通用数据库的SQL.

解决方案 »

  1.   

    select * from table_name order by to_number(substr(name, 4));
      

  2.   

    就是想排序的结果根据后面的数字进行排序,而不是根据字符串进行排序.谢谢dreamhunter_lan,不过我想问一下,有没有通用的sql语句呢,这个好象只是oracle 支持呀.
      

  3.   


    select col1 from yourtable order by length(col1),col1
      

  4.   

    能把值搞成ext01,ext02,ext03.....,ext10,ext11可能就不那么麻烦了
      

  5.   


    select col1 from yourtable order by substr(col1,-1,length(col1)-instr(col1,'t'))
      

  6.   

    这个是通用的select * from tt order by length(a),substr(a, 4);