web-dev-qa-db-ja.com

NULLのときにMAX関数で0を設定するにはどうすればよいですか?

MAX関数でNULLの場合に属性の値を0に設定する方法を教えてください。例えば:

Name columns:
number - date

Values:
10 - 2012-04-04
11 - 2012-04-04
12 - 2012-04-04
13 - 2012-04-15
14 - 2012-06-21
 1 - 2013-07-04

数値は増分フィールドですが、新年が来ると1に設定されます。しかし結果:

SELECT (MAX(number)+1) number WHERE date LIKE "2014%" 

mAX(number)はNULLであり、0ではないため、NULLであり、1ではありません。

29
Donovant

まあ、2014年のような日付がないので、nullを期待します。なぜなら、最大のものは実際には何も意味がないからです。

しかし、これを行います:

COALESCE(MAX(number),0)

つまり、次のリストから最初のnull以外のものを取得するので、maxがnullの場合、0

42
Nanne

COALESCEは機能しますが、 [〜#〜] ifnull [〜#〜] の方がわかりやすいようです。

IFNULL(MAX(number), 0)

最初の式がNULLでない場合、IFNULL()は式自体を返します。それ以外の場合は、2番目のパラメーターを返します。 IFNULL()は、使用されるコンテキストに応じて、数値または文字列値を返します。

19
Demis Palma ツ