在将生产数据库迁移到测试环境时,我需要更新多个表中的值。表的名称可以在另一个表中找到。我怎样才能做到这一点?
我的意思是:
for each value$ in select replace(tablename,' ','') from table1
update value$ set replace(column1,'A','B')
它看起来像一个嵌套的SQL语句。
答案 0 :(得分:2)
你需要为此构建一些动态sql。我更喜欢一次性构建它并作为一个整体执行:
declare @sql varchar(max) = ''
select @sql += '
update ' + QUOTENAME(replace(tablename,' ','')) + '
set column1 = replace(column1,''A'',''B'')'
from table1
exec (@sql)