[英]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.