我正在将旧系统迁移到新系统,并且确实发生了一些非常愚蠢的事情,但是无论如何我都需要这样做;
UPDATE tblSomething
SET Column3 = 'Something'
WHERE ID = 58
通过使用类似这样的东西;
DECLARE @No INT = 3
UPDATE tblSomething
SET Column+@No = 'Something
WHERE ID = 58
因此,我尝试使用一个值作为列名。请帮助...
答案 0 :(得分:2)
您不能直接将变量用作对象名,而必须使用Dynamic SQL。
DECLARE @No INT = 3
DECLARE @DynamicSQL VARCHAR(MAX) = '
UPDATE
tblSomething
SET
Column' + + CONVERT(VARCHAR(10), @No) + ' = ''Something'' WHERE ID = 58'
PRINT (@DynamicSQL)
EXEC (@DynamicSQL)
当心在动态sql上插入不安全的值(SQL注入)。整数并没有太大问题,但是对于数据库,表或列,您应该使用QUOTENAME()
并将VARCHAR
的长度限制为一个合适的值。