7

我有一个简单的表(测试),我需要在其中执行一些添加(我想获得行总数和列总数)。

 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 加法?

4

3 回答 3

24

你想使用coalesce()

select coalesce(var1, 0) + coalesce(var2, 0)

coalesce()是 ANSI 标准,可用于大多数数据库(包括 MySQL)。

于 2013-07-03T13:37:50.030 回答
11

使用IFNULL功能

SELECT IFNULL(var1, 0) + IFNULL(var2, 0) FROM test
于 2013-07-03T13:37:21.607 回答
0
select 
Case when (coalesce(`var1`, 0) + coalesce(`var2`, 0))=0
then NULL
else coalesce(`var1`, 0) + coalesce(`var2`, 0)
end
from test

SQL 小提琴

于 2013-07-03T13:38:56.777 回答