create table #tab(id varchar(50))
insert into #tab values('AAA1111113')
insert into #tab values('AAA1111113-1')
insert into #tab values('AAA1111113-10')
insert into #tab values('AAA1111113-11')
insert into #tab values('AAA1111113-2')
insert into #tab values('AAA1111114')
insert into #tab values('AAA1111113-20')
insert into #tab values('AAA1111113-3')
insert into #tab values('AAA1111113-4')
insert into #tab values('AAA1111114-1')
select * from #tab 
order by left(id,10)

解决方案 »

  1.   

    to: lw1a2
    谢谢!
    数据是在表中的,有上万条的,上面的数据只是样例,我不可能实际知道是什么数据的。
    用临时表一条条插入肯定不行的。
      

  2.   

    晕呀,你不明白我的意思吗
    那些只是测试数据,你只要关心最后那个SELECT语句就可以了
      

  3.   

    select * from #tab 
    order by left(id,11),cast(case when stuff(id,1,11,'')='' then 0 else stuff(id,1,11,'') end as int)