33

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ではありません。

4

2 に答える 2

54

ええと、2014年のような日付はないので、実際には何もないので、nullを期待するでしょう。

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

COALESCE(MAX(number),0)

つまり、次のリストから最初のnull以外のものを取得します。したがって、maxnullの場合は、次のようになります。0

于 2012-04-16T10:10:32.810 に答える
29

COALESCEは機能しますが、IFNULLの方がわかりやすいようです。

IFNULL(MAX(number), 0)

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

于 2014-10-24T11:28:00.800 に答える