我有一张大桌子,里面有一些NULL。从表中选择0(而不是NULL)的最简单方法是什么。
或者,如果没有简单的方法可以做到,我愿意将表中的所有空值都替换为0。
有很多列,我不想像ISNULL(FieldName,0)AS FieldName这样遍历每一列。
最佳答案
正如这里许多人所说,最好的方法是ISNULL(),但是,如果您想要一种简单的方法来生成所有这些ISNULL(),请使用以下代码:
SELECT 'ISNULL([' + COLUMN_NAME + '], ' +
CASE
WHEN DATA_TYPE = 'bit' THEN '0'
WHEN DATA_TYPE = 'int' THEN '0'
WHEN DATA_TYPE = 'decimal' THEN '0'
WHEN DATA_TYPE = 'date' THEN '''1/1/1900'''
WHEN DATA_TYPE = 'datetime' THEN '''1/1/1900'''
WHEN DATA_TYPE = 'uniqueidentifier' THEN '00000000-0000-0000-0000-000000000000'
ELSE '''''' -- everything else get's an empty string
END + ') AS [' + COLUMN_NAME + '],'
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName'
这将使繁琐的工作变得更加容易,然后您只需编辑输出以说明各种字段类型(int,varchar,date等)即可
编辑:考虑具有默认值的各种数据类型。
关于sql - SQL替换所有NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7930810/