SELECT
tb.name AS tb_name,
fd.name AS fd_name
FROM sysobjects tb--查询所有表
LEFT JOIN syscolumns fd --链接所有表对应的列名
ON tb.id = fd.id
WHERE tb.xtype = 'u'
上面这段代码就是获取或有表以及对应的列名。
用游标将表明和字段名循环遍历
DECLARE @tb NVARCHAR(200) = '', @fb NVARCHAR(2000) = ''
DECLARE curTB CURSOR
FOR
SELECT
tb.name AS tb_name,
fd.name AS fd_name
FROM sysobjects tb--查询所有表
LEFT JOIN syscolumns fd--链接所有表对应的列名
ON tb.id = fd.id
WHERE tb.xtype = 'u'
OPEN curTB
FETCH NEXT FROM curTB
INTO @tb, @fb
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @sqlstr NVARCHAR(MAX) = ''
SET @sqlstr = 'SELECT ' + @fb + ' FROM ' + @tb + ' where ' + @fb + '= ''2015 ''' --查询所有字段值
EXEC (@sqlstr)
FETCH NEXT FROM curTB
INTO @tb, @fb
END
CLOSE curTB
DEALLOCATE curTB
你只需要把上面这段查询所有字段值的改成update语句就可以了。
注意改之前先备份!先备份!先备份!
重要的事情说三遍!
另外,建议你还是把所有数据先查询出来,或者将有2015这个值的表和字段名先写到一张你自定义的表或临时表中,你可以先分析一下哪些是可以改的,再下手。