0

我正在尝试使用 SQL 更新一行,但我希望能够传入一个变量来更新要更新的列的名称。这可能吗?

DECLARE @Place varchar(max)
SET @Place = '[MDinner]'

UPDATE [UserMealPlans] SET @Place = NULL WHERE [UserId] = 'ffc3a7ed-264f-4d75-ae4c-aabe900023b6'

这是我的声明,它说 1 行受到影响,但是该列未设置为空。

如果我这样做,它工作正常:

UPDATE [UserMealPlans] SET [MDinner] = NULL WHERE [UserId] = 'ffc3a7ed-264f-4d75-ae4c-aabe900023b6'

关于如何正确执行此操作的任何想法?

谢谢!

4

1 回答 1

2

为此,您需要使用动态 SQL:

DECLARE @Place varchar(max)
DECLARE @query  AS NVARCHAR(MAX)
SET @Place = '[MDinner]'

SET @query = 'UPDATE [UserMealPlans] SET ' 
    + @Place + '= NULL WHERE [UserId] = ''ffc3a7ed-264f-4d75-ae4c-aabe900023b6'''

exec(@query)
于 2012-08-27T18:44:05.820 回答