[英]Automatically update particular data of a specific column with new data in all tables
--TO UPDATE PARTICULAR COLUMN IN ALL TABLES IN A DATABASE
declare
@query nvarchar(max)='',
@newValue varchar(10)='NEWVALUEHERE',
@oldValue varchar(10)='OLDVALUEHERE'
select
@query = @query + ' Update ' +
quotename(object_name(c.object_id)) +
' set [COLUMNNAMEHERE] = @newValue where [COLUMNNAMEHERE] = @oldValue ;'
from
sys.columns c
join
sys.all_objects o on c.object_id = o.object_id
where
c.name = 'COLUMNNAMEHERE' and o.type = 'U'
select @query
--IF EVERYTHING SEEMS FINE COMMENT THE UPPER LINE AND UNCOMMENT THE LINE BELOW AND EXECUTE
--exec sp_executesql @query, N'@newValue varchar(10), @oldValue varchar(10)', @newValue=@newValue,@oldValue=@oldValue
所以,我有这个可以完成工作的查询,但是在执行select @query
之后,我需要手动复制粘贴结果并替换;
与\n go \n
在' Update ' + quotename(object_name(c.object_id)) + ' set [COLUMNNAMEHERE] = @newValue where [COLUMNNAMEHERE] = @oldValue;'
在Ctrl + H中使用正则表达式选项,因为可能会提前结束查询执行的潜在错误。
由于我查询的最后一行
exec sp_executesql @query, N'@newValue varchar(10), @oldValue varchar(10)', @newValue=@newValue,@oldValue=@oldValue
变得无用,我无法自动执行此查询。
如果必须这样做,只需在动态 SQL 中使用CHAR(10)
:
declare
@query nvarchar(max)='',
@newValue varchar(10)='NEWVALUEHERE',
@oldValue varchar(10)='OLDVALUEHERE'
select @query = @query + 'Update ' + quotename(object_name(c.object_id)) + ' set [COLUMNNAMEHERE] = @newValue where [COLUMNNAMEHERE] = @oldValue;' + CHAR(10) + 'GO' + CHAR(10)
from sys.columns c JOIN sys.all_objects o on c.object_id=o.object_id
where c.name = 'COLUMNNAMEHERE' and o.type='U'
select @query
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.