SQL Server-计算结果中的NULL值导致NULL结果

时间:2018-11-08 18:07:03

标签: sql-server sql-server-2008

我遇到了这个问题,我确信与MSSQL合作的其他所有人都已经处理过:

CREATE TABLE #temp (
    value1 DECIMAL(10,2)
    , value2 DECIMAL(10,2)
);

INSERT INTO #temp VALUES (1.00, NULL); 

SELECT value1 + value2 FROM #temp

如果我运行最后一个value1 + value2查询,而不是获得预期结果(1.00),则当我要计算的值之一为{时,它将返回NULL {1}}。这引起了我报告中的种种麻烦,因为当我的输入之一是NULL时,查询没有返回正确的值。

上面是否有解决方法来获得预期的NULL而不是1.00的结果,从而将NULL的第二个值视为零?

3 个答案:

答案 0 :(得分:1)

SELECT coalesce(value1,0) + coalesce(value2,0) FROM #temp

答案 1 :(得分:0)

是的。您可以使用ISNULL(value2, 0)

例如select isnull(value1, 0) + isnull(value2, 0);

答案 2 :(得分:0)

向NULL添加任何内容都会导致NULL,因为NULL是未知的。您可以通过使用合并或ISNULL来避免这种情况。我最经常在生成字符串的人中看到这种情况,他们不希望字段中出现NULL值。

CREATE TABLE #temp (
    value1 DECIMAL(10,2)
    , value2 DECIMAL(10,2)
);

INSERT INTO #temp VALUES (1.00, NULL); 

SELECT ISNULL(value1,0) + ISNULL(value2,0) FROM #temp