映射SQL Server中动态变量整数的动态列名

时间:2017-03-16 11:50:38

标签: sql sql-server dynamic-columns

正如此链接Mapping dynamic column names in sql server

中所述

我想生成col_1,col_2等列名。参数@num是整数类型。

我的查询如下:

DECLARE @num int = 15;
DECLARE @COL VARCHAR(50) = col_@step;

UPDATE table_tblName 
SET @COL = <some value> 
WHERE <condition>

1 个答案:

答案 0 :(得分:1)

此更新声明无法正常工作。 您不能在Sql中参数化标识符。

当你写这样的东西时:

UPDATE table_tblName SET @COL=<some value> WHERE <condition>,

Sql Server将其威胁为两个不同的声明:

UPDATE table_tblName 

并且

SET @COL=<some value> WHERE <condition>

由于update语句不包含SET子句,因此它基本上是无操作。

为了能够参数化标识符,您必须使用动态sql -

DECLARE @num int = 15;
DECLARE @COL VARCHAR(50) = col_ + @step;
DECLARE @Sql VARCHAR(200) = 'UPDATE table_tblName SET ' + @COL + '=<some value> WHERE <condition>'
EXEC(@Sql)

See for yourself on rextester