【问题标题】:Mapping dynamic column names in SQL Server where dynamic variable integer在 SQL Server 中映射动态列名,其中动态变量整数
【发布时间】:2017-03-16 11:50:38
【问题描述】:

正如链接中提到的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>

【问题讨论】:

  • 你可以使用 CAST 函数将其转换为 varchar 然后添加,你试过吗?
  • 我试过了。它没有用。

标签: sql sql-server dynamic-columns


【解决方案1】:

此更新语句无法按原样工作。 您不能在 Sql 中参数化标识符。

当你写这样的东西时:

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

发生的情况是 Sql Server 以两个不同的语句威胁它:

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)

See for yourself on rextester

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2014-10-19
  • 2021-07-07
  • 1970-01-01
相关资源
最近更新 更多