2012-04-16 131 views
17

我想了解如何使用MAX函數爲NULL時設置屬性的0值。例如:如何用MAX函數將NULL設置爲NULL?

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%" 

爲NULL,而不是1,因爲MAX(數)爲NULL,而不是0

回答

31

嗯,有像2014沒有日期,你會期望空,因爲最大的實際上沒有任何東西。

但做到這一點:

COALESCE(MAX(number),0) 

這意味着:從下表得到的第一個非空的東西,所以如果你max爲null,它會給你0

+0

非常感謝! ;-) – Donovant 2012-04-16 10:18:33

+0

當沒有結果時,它的mysql標準顯示輸出'null'被發現不是'0'。 你可以使用'COALESCE(MAX(number),0)'''''Nanne'告訴你。 – 2012-04-16 10:16:08

12

COALESCE工作,但IFNULL似乎對我更清楚。

IFNULL(MAX(number), 0) 

如果第一個表達式不是NULL,則IFNULL()返回表達式本身,否則返回第二個參數。 IFNULL()返回一個數字或字符串值,具體取決於使用它的上下文。