我在SQL Server中寻找一种方法来迭代运行以下查询(或者实现相同的结果):
UPDATE <table> SET <column> = 0 WHERE <column> IS NULL
我已使用以下查询获取类型&#39; int&#39;的所有列,但如何才能达到上述要求?
SELECT table_name, column_name FROM information_schema.columns where data_type = 'int' and table_name not like 'v_%' and table_name not like 'sym_%'
答案 0 :(得分:2)
这对于一些动态sql来说相当简单。我会非常小心地在任何系统上执行此操作,并会询问有关为什么这是一个好主意的问题。我永远不会在我的系统上执行此操作,但代码实际上相当直接。
declare @SQL nvarchar(max) = ''
SELECT @SQL = @SQL + 'Update [' + TABLE_NAME + '] set [' + COLUMN_NAME + '] = 0 where [' + COLUMN_NAME + '] IS NULL;'
FROM information_schema.columns
where data_type = 'int'
and table_name not like 'v_%'
and table_name not like 'sym_%'
select @SQL
--exec sp_executesql @SQL