如何在sql server 2012中使用动态列进行查询

时间:2016-04-25 07:13:03

标签: sql-server

我有以下示例代码。结果是这些列作为VARCHAR类型。

declare @col1 varchar(80)='[Column1]'
declare @col2 varchar(80)='[Column2]'
SELECT @col1,@col2 FROM MyTable

2 个答案:

答案 0 :(得分:2)

您必须使用动态SQL:

DECLARE @col1 VARCHAR(80) = 'Column1';
DECLARE @col2 VARCHAR(80) = 'Column2';

DECLARE @sql NVARCHAR(MAX);

SELECT @sql = 'SELECT ' + QUOTENAME(@col1) + ', ' + QUOTENAME(@col2) + ' FROM MyTable;';

EXEC sp_executesql @sql;

请注意,您必须确保列名是真正的列名。您还需要参数化查询以增加安全性。如果您遇到任何这些错误,可能会产生巨大的安全问题。

答案 1 :(得分:1)

尝试,

declare @query nvarchar(500) = 'select ' + @col1 + ', ' + @col1 + ' FROM MyTable'
exec @query