2013-07-03 33 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