在 SQL 服务器中映射动态列名称,其中动态变量整数
Mapping dynamic column names in SQL Server where dynamic variable integer
如本文所述link
我想生成像col_1,col_2...这样的列名。参数@num
是整数类型。
我有以下查询:
DECLARE @num int = 15;
DECLARE @COL VARCHAR(50) = col_@step;
UPDATE table_tblName
SET @COL = <some value>
WHERE <condition>
此更新语句无法按原样运行。
您不能在 Sql.
中参数化标识符
当你这样写的时候:
UPDATE table_tblName SET @COL=<some value> WHERE <condition>,
发生的情况是 Sql 服务器将其威胁为两种不同的语句:
UPDATE table_tblName
和
SET @COL=<some value> WHERE <condition>
由于更新语句不包含 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)
如本文所述link
我想生成像col_1,col_2...这样的列名。参数@num
是整数类型。
我有以下查询:
DECLARE @num int = 15;
DECLARE @COL VARCHAR(50) = col_@step;
UPDATE table_tblName
SET @COL = <some value>
WHERE <condition>
此更新语句无法按原样运行。 您不能在 Sql.
中参数化标识符当你这样写的时候:
UPDATE table_tblName SET @COL=<some value> WHERE <condition>,
发生的情况是 Sql 服务器将其威胁为两种不同的语句:
UPDATE table_tblName
和
SET @COL=<some value> WHERE <condition>
由于更新语句不包含 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)