我已经编写了以下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 ...
有更好的方法吗?有没有可以快速执行此任务的工具?
我试图阻止写出一堆列名。更像是生成一个列表,如代码片段中所述,并删除我不需要的列。
答案 0 :(得分:2)
在SQL Server Management Studio中,您可以将Columns文件夹拖放到任何Query窗口中,该窗口可以快速提供相同的结果(当然不是以编程方式)。
答案 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,'')