我有简单的表(测试),我需要执行一些添加(我想要总行和列总数)。
id var1 var2
1 NULL NULL
2 10 NULL
对于列总计,求和按预期工作(在添加中忽略NULL):
SELECT SUM(var1) FROM test
10
对于行总计,加法不会忽略NULL(如果任何列为NULL,则结果为NULL):
SELECT var1+var2 FROM test
NULL
NULL
我希望它返回的是:
SELECT var1+var2 FROM test
NULL
10
有没有办法让MySQL在添加中将NULL视为0?
答案 0 :(得分:20)
您想使用coalesce()
:
select coalesce(var1, 0) + coalesce(var2, 0)
coalesce()
是ANSI标准,可在大多数数据库(包括MySQL)中使用。
答案 1 :(得分:9)
使用IFNULL
函数
SELECT IFNULL(var1, 0) + IFNULL(var2, 0) FROM test
答案 2 :(得分:0)
select
Case when (coalesce(`var1`, 0) + coalesce(`var2`, 0))=0
then NULL
else coalesce(`var1`, 0) + coalesce(`var2`, 0)
end
from test
<强> SQL FIDDLE 强>