我遇到了这个问题,我确信与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
的第二个值视为零?
答案 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