试试
...order by cast(right(yourfield, 3) as int)

解决方案 »

  1.   

    --这样
    select * from  tablename order by  fieldname,cast(right(fieldname, 3) as int)
      

  2.   

    XXXX位数一定吗?
    NNN位数一定吗?
    看来是不定的,否则就排好了。ORDER BY CAST(SUBSTRING(FIELDNAME,CHARINDEX(']',FIELDNAME)+1,CHARINDEX('号',FIELDNAME)-CHARINDEX(']',FIELDNAME)-1) AS INT)
      

  3.   

    order by right(replace(FIELDNAME,'号',''),len(FIELDNAME)-charindex(']',FIELDNAME)-1)
      

  4.   

    order by cast(substring(fieldname,charindex(']',fieldname+1,datalength(fieldname)-1) as int)
      

  5.   

    如果XXXX位数确定(字符),NNN位数不确定(1-999),请用:
    order by cast(substring(FIELDNAME,6,9) as int)
    呵呵,来泡分的
      

  6.   

    order by cast(substring(fieldname,charindex(']',fieldname)+1,datalength(fieldname)-1) as int)
      

  7.   

    select * from
    (select *,convert(int,substring(fieldname,6,3)) orderfield from tablename)aaa
    order by orderfield