2013-07-03 80 views
3

我有一个简单的表(测试),我需要执行一些附加操作(我想获得行总数和列总数)。在MySQL中添加列 - 如何将NULL视为0

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?

+1

类似http://stackoverflow.com/questions/1441333/mysql-typecasting-null-to-0 – PiLHA

+1

考虑正常化您的数据。添加列是一个不寻常的要求。 – Strawberry

回答

7

使用IFNULL功能

SELECT IFNULL(var1, 0) + IFNULL(var2, 0) FROM test 
18

你想用coalesce()

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

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

+2

这比其他解决方案更便于携带 – Strawberry

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