我有一个大表,里面有一些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等)
编辑:使用默认值计算各种数据类型.