2014-02-19 133 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,'')