重新排列使用INFORMATION_SCHEMA.COLUMNS的查询结果

时间:2018-10-09 01:27:43

标签: sql sql-server

基本上,我使用此查询来查找此特定表的列。

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'PARTICULAR_TABLE'

我还在下面使用此查询来获取该表的特定列。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'PARTICULAR_TABLE'
AND COLUMN_NAME in ('A','B','C','D','E')

结果:

COLUMN_NAME
A
B
C
D
E

问题在于结果的排列。我的目标是将其安排到所需的安排。就是这样。

所需结果:

COLUMN_NAME
B
A
C
D
E

我最初的问题是检索此特定表的列。该查询的结果应显示单个列。而且我能够使用上面使用的查询来实现这一点。现在的问题是该结果的期望排列。我使用的是Microsoft SQL Server Management Studio 2016。

1 个答案:

答案 0 :(得分:1)

[OPTON 1]:使用ORDER BY并在那里指定所需的顺序

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'PARTICULAR_TABLE'
AND COLUMN_NAME in ('A','B','C','D','E')
ORDER BY CASE COLUMN_NAME WHEN 'B' THEN 1 WHEN 'A' THEN 2 WHEN 'C' THEN 3 END

[选项2]:使用临时表或表变量,并按所需顺序插入列名

declare @col table
(
    col_order   int identity(1,1),
    colname     varchar(50)
)

insert into @col (colname) values
('B') , ('A') , ('C') , ('D') , ('E')

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS S
     INNER JOIN @col C ON S.COLUMN_NAME = C.colname
WHERE TABLE_NAME = 'PARTICULAR_TABLE'
ORDER BY C.col_order