2014-02-19 126 views
0

我已經熟了以下SQL生成一個查詢,給定一個表,列出了在上述表中的所有列的select部分列列表:生成的SQL Server

declare @cols nvarchar(max); 
set @cols = ''; 

SELECT @cols += lower(', ' + c.name) 
FROM sys.columns c 
WHERE c.object_id = OBJECT_ID('tablename') 

select RIGHT(@cols, LEN(@cols) - 2); 

-- output: 
-- id, sex, isactive, displayname ... 

有沒有更好的辦法去做這個?是否有任何工具可以快速執行此任務?

我試圖阻止寫出一堆列名。更願意生成一個列表,如代碼片段中所述,並刪除我不需要的列。

+1

在SSMS,您還可以在表上單擊右鍵,選擇:**腳本表作爲** - **選擇** - **新的查詢編輯器窗口** –

回答

2

在SQL Server Management Studio中,您可以將Columns文件夾拖放到任何查詢窗口中,該窗口可以快速爲您提供相同的結果(當然,當然不是編程方式)。

enter image description here

enter image description here

+0

+1這很酷,但我不喜歡鼠標和點擊拖動位。尋找更智能的方法。也許是第三方工具,宏觀或其他合併。 – culturalanomoly

0
select 
@cols =stuff((SELECT ', ' + c1.name FROM sys.columns c1 where c.object_id=c1.object_id for xml path('')),1,1,'') 
FROM sys.columns c 
WHERE c.object_id = OBJECT_ID('tablename') 

select @cols 
0

另一種方式

select stuff((SELECT lower(' ,' + c.name) 
FROM sys.columns c 
WHERE c.object_id = OBJECT_ID('<<TABLENAME>>') 
for xml path('')),1,2,'')