数据需要按编号排序显示,编号由数字和连字符组成,格式:XX-XXX(最大可能位数)。
约束条件:
1、无法更改表结构;
2、编号不能自动补零;比如1-1不能写成01-001;
要求:
按连字符之后的数从升序排列
比如:
1-1
1-2
1-3
2-1
2-2
如此排序。
请大神指教。

解决方案 »

  1.   

    select * from tt order by 0+left(f1,instr(f1,'-')-1),0+mid(f1,instr(f1,'-')+1,100)
      

  2.   

    select *
    from tb
    order by concat(right(concat('0',substring_index(col,'-',1)),2),right('00',concat(00,substring_index(col,'-',-1)),2))
      

  3.   

    select * from tt order by to_num(left(f1,instr(f1,'-')-1)),to_num(right(f1,instr(f1,'-')+1))) 
      

  4.   

    select *
    from tb
    order by substring_index(col,'-',1)+0,substring_index(col,'-',-1)+0