具有可变列名的动态更新语句

jeb*_*ar8 13 sql t-sql sql-server

我们希望在多个SQL Server数据库中进行更新,以将某个表中的所有NULL值更改为空字符串而不是NULL.我们可能会在数百个数据库中执行此操作.表名将始终相同,但列名称可根据前端应用程序的配置方式进行变量(不要判断......我没有创建此系统).

有没有办法在不知道列名的情况下对所有这些列进行更新?

toz*_*zka 17

您可以在动态sql中传递列的名称:

declare @sql nvarchar (1000);
set @sql = N'update table set ' + @column_name + '= ''''';

exec sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)

  • 请[在动态对象名称周围使用``allame`](http://stackoverflow.com/a/6285111/11683). (3认同)
  • @GSerg +1提及`quotename()`.我会说它在这里使用似乎有点多余,因为这只是一些内部DML.如果它是一个用来自公共(或地狱,甚至是内部)对象网站的用户输入执行的特征,我会全力以赴. (2认同)