22,210
社区成员
发帖
与我相关
我的任务
分享
select *
from tb
order by left(stuff(pid,1,1,''),4) desc,(case when charindex('不备',bid) > 0 then 1 else 0 end),right(pid,len(pid)-6),id
order by ***********,stuff(pid,1,charindex(']',bid),'')
if not object_id('tb') is null
drop table tb
Go
Create table tb(id int,pid char(20),bid varchar(30))
insert into tb
select 1,'[2010]001','豫勘测评备字[2010]2号' union all
select 2,'[2010]002','豫勘测评备字[2010]12号' union all
select 3,'[2010]003','豫勘测评不备字[2010]3号' union all
select 4,'[2010]003-1','豫勘测评备字[2010]1号' union all
select 5,'[2010]004','豫勘测评不备字[2010]21号' union all
select 6,'[2010]005','豫勘测评备字[2010]4号' union all
select 7,'[2010]006','豫勘测评备字[2010]12号' union all
select 8,'[2010]007','豫勘测评备字[2010]63号' union all
select 9,'[2010]008','豫勘测评备字[2010]259号' union all
select 10,'[2010]009','豫勘测评不备字[2010]23号' union all
select 11,'[2010]010','豫勘测评不备字[2010]211号' union all
select 12,'[2011]001','豫勘测评备字[2011]1号' union all
select 13,'[2011]002','豫勘测评备字[2011]2号' union all
select 14,'[2011]003','豫勘测评备字[2011]3号' union all
select 15,'[2011]004','豫勘测评不备字[2011]1号' union all
select 16,'[2011]004-1','豫勘测评备字[2011]16号' union all
select 17,'[2011]005','豫勘测评不备字[2011]2号' union all
select 18,'[2011]006','豫勘测评备字[2011]29号' union all
select 19,'[2011]007','豫勘测评备字[2011]123号' union all
select 20,'[2011]008','豫勘测评不备字[2011]12号' union all
select 21,'[2011]008-1','豫勘测评备字[2011]235号' union all
select 22,'[2011]009','豫勘测评不备字[2011]36号' union all
select 23,'[2011]010','豫勘测评不备字[2011]121号' union all
select 24,'[2011]011','豫勘测评不备字[2011]222号' union all
select 25,'[2011]012','豫勘测评备字[2011]369号'
go
SELECT * FROM TB
ORDER BY
CASE WHEN CHARINDEX('不',BID)>0 THEN 1 ELSE 0 END,
SUBSTRING(BID,CHARINDEX('[',BID)+1,CHARINDEX(']',BID)-CHARINDEX('[',BID)-1)*1,
REPLACE(SUBSTRING(BID,CHARINDEX(']',BID)+1,LEN(BID)-CHARINDEX('[',BID)-1),'号','')*1
/*
(所影响的行数为 25 行)
id pid bid
----------- -------------------- ------------------------------
4 [2010]003-1 豫勘测评备字[2010]1号
1 [2010]001 豫勘测评备字[2010]2号
6 [2010]005 豫勘测评备字[2010]4号
7 [2010]006 豫勘测评备字[2010]12号
2 [2010]002 豫勘测评备字[2010]12号
8 [2010]007 豫勘测评备字[2010]63号
9 [2010]008 豫勘测评备字[2010]259号
12 [2011]001 豫勘测评备字[2011]1号
13 [2011]002 豫勘测评备字[2011]2号
14 [2011]003 豫勘测评备字[2011]3号
16 [2011]004-1 豫勘测评备字[2011]16号
18 [2011]006 豫勘测评备字[2011]29号
19 [2011]007 豫勘测评备字[2011]123号
21 [2011]008-1 豫勘测评备字[2011]235号
25 [2011]012 豫勘测评备字[2011]369号
3 [2010]003 豫勘测评不备字[2010]3号
5 [2010]004 豫勘测评不备字[2010]21号
10 [2010]009 豫勘测评不备字[2010]23号
11 [2010]010 豫勘测评不备字[2010]211号
15 [2011]004 豫勘测评不备字[2011]1号
17 [2011]005 豫勘测评不备字[2011]2号
20 [2011]008 豫勘测评不备字[2011]12号
22 [2011]009 豫勘测评不备字[2011]36号
23 [2011]010 豫勘测评不备字[2011]121号
24 [2011]011 豫勘测评不备字[2011]222号
(所影响的行数为 25 行)
select * from tb
order by left(right(BID,len(BID)-charindex('[',BID)+1),6) desc,
(case when charindex('不备',bid) > 0 then 1 else 0 end),
cast(right(left(bid,len(bid)-1),len(BID)-charindex(']',BID)-1) as int)
create table tb(id int,pid char(20),bid varchar(30))
insert into tb
select 1,'[2010]001','豫勘测评不备字[2010]1号' union all
select 2,'[2010]001','豫勘测评备字[2010]1号' union all
select 3,'[2010]001','豫勘测评备字[2010]1号' union all
select 4,'[2010]001','豫勘测评不备字[2010]1号' union all
select 5,'[2010]001','豫勘测评备字[2010]1号' union all
select 6,'[2010]001','豫勘测评不备字[2010]1号' union all
select 16,'[2011]004-1','豫勘测评备字[2011]1号' union all
select 17,'[2011]005','豫勘测评不备字[2011]1号' union all
select 18,'[2011]006','豫勘测评备字[2011]1号' union all
select 19,'[2011]007','豫勘测评备字[2011]1号' union all
select 20,'[2011]008','豫勘测评不备字[2011]1号'
go
select *
from tb
order by left(stuff(pid,1,1,''),4) desc,(case when charindex('不备',bid) > 0 then 1 else 0 end),right(pid,len(pid)-6)
drop table tb
id pid bid
----------- -------------------- ------------------------------
16 [2011]004-1 豫勘测评备字[2011]1号
18 [2011]006 豫勘测评备字[2011]1号
19 [2011]007 豫勘测评备字[2011]1号
20 [2011]008 豫勘测评不备字[2011]1号
17 [2011]005 豫勘测评不备字[2011]1号
2 [2010]001 豫勘测评备字[2010]1号
3 [2010]001 豫勘测评备字[2010]1号
5 [2010]001 豫勘测评备字[2010]1号
6 [2010]001 豫勘测评不备字[2010]1号
4 [2010]001 豫勘测评不备字[2010]1号
1 [2010]001 豫勘测评不备字[2010]1号
(11 行受影响)
create table tb(id int,pid char(20),bid varchar(30))
insert into tb
select 1,'[2010]001','豫勘测评不备字[2010]1号' union all
select 2,'[2010]001','豫勘测评备字[2010]1号' union all
select 3,'[2010]001','豫勘测评备字[2010]1号' union all
select 4,'[2010]001','豫勘测评不备字[2010]1号' union all
select 5,'[2010]001','豫勘测评备字[2010]1号' union all
select 6,'[2010]001','豫勘测评不备字[2010]1号' union all
select 16,'[2011]004-1','豫勘测评备字[2011]1号' union all
select 17,'[2011]005','豫勘测评不备字[2011]1号' union all
select 18,'[2011]006','豫勘测评备字[2011]1号' union all
select 19,'[2011]007','豫勘测评备字[2011]1号' union all
select 20,'[2011]008','豫勘测评不备字[2011]1号'
select * from tb
order by left(right(BID,len(BID)-charindex('[',BID)+1),6) desc,
(case when charindex('不备',bid) > 0 then 1 else 0 end),id
/*
id pid bid
----------- -------------------- ------------------------------
16 [2011]004-1 豫勘测评备字[2011]1号
18 [2011]006 豫勘测评备字[2011]1号
19 [2011]007 豫勘测评备字[2011]1号
17 [2011]005 豫勘测评不备字[2011]1号
20 [2011]008 豫勘测评不备字[2011]1号
2 [2010]001 豫勘测评备字[2010]1号
3 [2010]001 豫勘测评备字[2010]1号
5 [2010]001 豫勘测评备字[2010]1号
1 [2010]001 豫勘测评不备字[2010]1号
4 [2010]001 豫勘测评不备字[2010]1号
6 [2010]001 豫勘测评不备字[2010]1号
select * from tb
order by left(right(BID,len(BID)-charindex('[',BID)),6) desc,
case when charindex('不备',bid) > 0 then 1 else 0 end),BID
select *
from tb
order by left(stuff(pid,1,1,''),4),(case when charindex('不备',bid) > 0 then 1 else 0 end),right(pid,len(pid)-6)