2012-04-16 12 views
17

Vorrei capire come impostare il valore 0 dell'attributo quando è NULL con la funzione MAX. Per esempio:Come impostare 0 con la funzione MAX quando è 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 

Numero è il campo incrementale, ma si 1 è impostato quando è arrivato il nuovo anno. Ma risultato di:

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

è NULL e non 1 perché MAX (numero) è NULL e non 0

risposta

31

Bene, in quanto non v'è alcuna data come 2014, che ci si aspetta nulla, perché il massimo di niente in realtà non lo è.

Ma fare questo:

COALESCE(MAX(number),0) 

Il che significa: ottenere la prima cosa che non nullo dall'elenco accanto, quindi se il vostro max è null, ti do 0

+0

Grazie mille! ;-) – Donovant

+0

Il suo standard mysql che mostra output 'null' quando non c'è risultato non viene trovato' 0'. Puoi usare 'COALESCE (MAX (numero), 0)' come dice 'Nanne'. –

12

COALESCE funziona, ma IFNULL mi sembra più chiaro.

IFNULL(MAX(number), 0) 

Se la prima espressione non è NULL, IFNULL() restituisce l'espressione stessa, altrimenti restituisce il secondo parametro. IFNULL() restituisce un valore numerico o stringa, a seconda del contesto in cui viene utilizzato.

Problemi correlati