我有一张大桌子,里面有一些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/

10-16 22:56