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 に答える