簡體   English   中英

如何從SQL Server中的查詢獲取列名

[英]How to get column names from a query in SQL Server

使用SQL Server。

我有一個非常廣泛的查詢,帶有很多別名,等等。

有沒有一種方法,僅使用SQL(存儲的proc很好,但是不使用PHP等)從此查詢獲取所有列名的列表? (我意識到我可能必須將查詢嵌入此解決方案中,但這很好。這只是一個臨時措施。)

謝謝!

如果您使用的是SQL Server 2012或更高版本,則可以利用sys.dm_exec_describe_first_result_set

SELECT name 
FROM 
sys.dm_exec_describe_first_result_set
('Your Query Here', NULL, 0) ;

演示

這個評論太長了。

您可以通過多種方式從查詢中獲取 ,例如:

select top 0 s.*
from (<your query here>) s;

然后,您可以解析結果。

但是,我發現另一種有用的方法。 使用相同的邏輯創建視圖或表:

select top 0 s.*
into _TempTableForColumns
from (<your query here>) s;

然后使用information_schema (或您喜歡的系統表):

select *
from information_schema.columns
where table_name = '_TempTableForColumns' and schema_name = 'dbo';

drop table _TempTableForColumns;

這種方法的優點是您可以獲得類型信息以及列名。 但是引擎仍然必須運行查詢,即使沒有返回任何行,也可能需要花費時間。 盡管列名和類型在編譯后可用,但我不知道在不執行查詢的情況下獲取列的方法。

在SQL Server 2008之后

select * 
from sys.columns c 
inner join sys.objects o on c.object_id = o.object_id 
where o.name = 'TableName'

之前

select * 
from syscolumns c 
inner join sysobjects o on c.id = o.id 
where o.name = 'TableName'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM