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)
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)
谢谢!
数据是在表中的,有上万条的,上面的数据只是样例,我不可能实际知道是什么数据的。
用临时表一条条插入肯定不行的。
那些只是测试数据,你只要关心最后那个SELECT语句就可以了
order by left(id,11),cast(case when stuff(id,1,11,'')='' then 0 else stuff(id,1,11,'') end as int)