在SQL Server中生成列列表

时间:2014-02-19 01:40:40

标签: sql sql-server

我已经编写了以下SQL来生成查询的select部分,给定一个表,列出所述表中的所有列:

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 ...

有更好的方法吗?有没有可以快速执行此任务的工具?

我试图阻止写出一堆列名。更像是生成一个列表,如代码片段中所述,并删除我不需要的列。

3 个答案:

答案 0 :(得分:2)

在SQL Server Management Studio中,您可以将Columns文件夹拖放到任何Query窗口中,该窗口可以快速提供相同的结果(当然不是以编程方式)。

enter image description here

enter image description here

答案 1 :(得分: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

答案 2 :(得分:0)

另一种方式

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