【发布时间】:2021-06-03 07:51:32
【问题描述】:
我有一个简单的表格,我想按特定规则对其进行排序。我想要的输出如下所示:
PERSON_THIRD_BUF
PERSON_TWO_BUF
PERSON_TWO_BUF_11
PERSON_TWO_BUF_10
PERSON_TWO_BUF_9
PERSON_TWO_BUF_8
PERSON_TWO_BUF_7
PERSON_TWO_BUF_6
PERSON_TWO_BUF_5
PERSON_TWO_BUF_4
PERSON_TWO_BUF_3
PERSON_TWO_BUF_2
PERSON_TWO_BUF_1
所以PERSON_THIRD_BUF应该是第一个,PERSON_TWO_BUF应该是第二个,PERSON_TWO_BUF_*应该是降序排列:
我已经对PERSON_TWO_BUF、PERSON_THIRD_BUF 进行了排序,但是我不知道如何按降序对PERSON_TWO_BUF_* 进行排序。
DECLARE @t table(col1 VARCHAR(50));
insert into @t
values
( N'PERSON_TWO_BUF' ),
( N'PERSON_THIRD_BUF' ),
( N'PERSON_TWO_BUF_1' ),
( N'PERSON_TWO_BUF_2' ),
( N'PERSON_TWO_BUF_3' ),
( N'PERSON_TWO_BUF_4' ),
( N'PERSON_TWO_BUF_5' ),
( N'PERSON_TWO_BUF_6' ),
( N'PERSON_TWO_BUF_7' ),
( N'PERSON_TWO_BUF_8' ),
( N'PERSON_TWO_BUF_9' ),
( N'PERSON_TWO_BUF_10' ),
( N'PERSON_TWO_BUF_11' )
SELECT * FROM @t
ORDER BY CASE
WHEN COL1 = 'PERSON_THIRD_BUF' THEN 0
WHEN COL1 = 'PERSON_TWO_BUF' THEN 1
WHEN COL1 LIKE 'PERSON_TWO_BUF_%' THEN 3
END
任何帮助将不胜感激
【问题讨论】:
标签: sql sql-server tsql sql-order-by