SQL Server有没有办法从给定列表中选择列

时间:2017-07-31 01:28:29

标签: sql-server dynamic-sql

我有一个动态列列表,然后选择列表中的列。

例如

Select (List of columns) 
from tablename

这是我的代码

SET NOCOUNT ON;

DECLARE @table TABLE(cols varchar(50));

DECLARE @tablename NVARCHAR(255);
DECLARE @tableid INT;
DECLARE @sSQL NVARCHAR(500);

SET @tableid = (SELECT DISTINCT TABLEID FROM faciltyShowedDetails WHERE layerid = @layerid);
SET @tablename = (SELECT dbo.FNC_Search_GetSearchTable(@tableid))

INSERT INTO @table(cols)
    SELECT COLUMN_NAME 
    FROM faciltyShowedDetails 
    WHERE layerid = @layerid;

我想从@table中的列列表中进行选择。

1 个答案:

答案 0 :(得分:2)

您将构造查询并使用动态SQL。假设“list”实际上是逗号分隔的列表:

declare @sql nvarchar(max);

set @sql = 'select [cols] from tablename';

set @sql = replace(@sql, '[cols]', @cols);

exec sp_executesql @sql;

编辑:

要从表中获取列,您可以使用技巧:

declare @cols varchar(max);

select @cols = ', ' + columnname
from @table t;

然后,您必须删除上一代码中的第一个逗号(使用stuff())。