select * from 表 order by convert(int, left(字段,patindex('%[^0-9]%',字段)-1))

解决方案 »

  1.   

    select * from 表 order by convert(int, case when patindex('%[^0-9]%',字段) > 0 then left(字段,patindex('%[^0-9]%',字段)-1) else 字段 end)
      

  2.   

    select * 
    from 表 
    order by convert(int, case when patindex('%[^0-9]%',字段) > 0 then left(字段,patindex('%[^0-9]%',字段)-1) else 字段 end)
    支持小楼
      

  3.   

    if object_id('tempdb.dbo.#') is not null drop table #
    create table # (col varchar(10))
    insert # select '6'
    insert # select '3'
    insert # select '10'
    insert # select '4A'
    insert # select '3040'
    insert # select '200'
    insert # select '104B'select * from # order by convert(int, case when patindex('%[^0-9]%',col) > 0 then left(col,patindex('%[^0-9]%',col)-1) else col end)
    /*
    col
    --------
    3
    4A
    6
    10
    104B
    200
    3040
    */
      

  4.   

    Thank You to Limpire for you help me!
    The problem is resolved!
      

  5.   


    select * from 表 order by convert(int, case when patindex('%[^0-9]%',字段) > 0 then left(字段,patindex('%[^0-9]%',字段)-1) else 字段 end)