更新整个表,其中值为NULL [不分别指示每列]

时间:2012-09-20 20:02:03

标签: sql sql-server

我需要帮助将整个表更新为0 [零],其中值为NULL。 没有单独指示每一列。

1 个答案:

答案 0 :(得分:1)

可以这样做,首先必须从INFORMATION_SCHEMA或其他地方提取所有列名,将SQL构建成字符串,然后执行它:

USE MyDatabase
DECLARE @TableName NVARCHAR(100)
SELECT @TableName = 'MyTable'

DECLARE @Sql NVARCHAR(4000) 
    SELECT @Sql = COALESCE(@Sql + '; ', '')
        + 'UPDATE dbo.'
        + @TableName
        + ' SET '
        + COLUMN_NAME
        + ' = 0 WHERE '
        + COLUMN_NAME
        + ' IS NULL'
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = @TableName
        AND IS_NULLABLE = 'YES'
        AND DATA_TYPE NOT IN ('text','ntext','image')

SELECT @Sql
EXEC(@Sql)

请务必相应地设置MyDatabaseMyTable