我有一张大桌子,里面有一些空的东西。从带有0而不是NULL的表中进行选择最简单的方法是什么?
或者,如果没有简单的方法可以做到这一点,我愿意将表中的所有空值物理地替换为0。
有很多列,我不想用ISNULL( FieldName ,0)这样的东西来遍历每一列作为FieldName。
发布于 2011-10-28 22:52:10
正如这里的许多人所说的,最好的方法是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等)
编辑:使用默认值记帐各种数据类型..
发布于 2011-10-28 22:49:06
实际上,你有两个选择
ISNULL(yourColumn,0) AS columnName或者实际修复问题并将所有空数据更改为0
UPDATE table
SET column = 0
WHERE
column IS NULL -- remember "column = NULL" always equates to NULL!当你这样做的时候,不要忘了哪里或者所有的东西都会变成0!
发布于 2011-10-28 22:46:32
您必须手动指定SELECT语句中的每一列,并使用ISNULL()函数:
SELECT ISNULL(columnName, 0), ... yes all of themhttps://stackoverflow.com/questions/7930810
复制相似问题