我们设计了在1个字段中注册客户的车站分区记录。所以表行看起来像这样。
create table test4 (f2 varchar(100))
insert into test4 (f2) values ('A08-0100')
insert into test4 (f2) values ('006-0100')
insert into test4 (f2) values ('008-0200')
insert into test4 (f2) values ('008-0200')
insert into test4 (f2) values ('007-0100')
insert into test4 (f2) values ('009-0100')
insert into test4 (f2) values ('009-F100')现在,我想按桩号排序,然后按分区排序,但我希望字母首先显示在第一组中。
到目前为止,我尝试过的是
select * from test4 order by left(f2, 3), right(f2, 40)
First Group(station) 2nd Group (division)
A08 - 0100预期输出:
A08-0100
006-0100
007-0100
008-0200
008-0200
009-0100
009-F100发布于 2019-08-06 11:55:24
你可以检查电台是否以字母开头,并相应地对其进行排序...如下所示:
case when left(f2, 1) like '[a-z]%' then 1 else 2 end在order by子句中使用此命令,如下所示:
select * from test4 order by case when left(f2, 1) like '[a-z]%' then 1 else 2 end, left(f2, 3), right(f2, 4);请在此处查看Fiddle。
https://stackoverflow.com/questions/57368608
复制相似问题