将所有表中的所有整数列设置为0,其中值当前为null

时间:2015-10-30 18:21:30

标签: sql sql-server

我在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_%'

1 个答案:

答案 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