2012-04-16 18 views
17

Me gustaría saber cómo establecer 0 valor del atributo cuando es NULL con la función MAX. Por ejemplo:¿Cómo se establece 0 con la función MAX cuando es NULO?

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 

El número es un campo incremental, pero se ha establecido a sí mismo 1 cuando ha llegado el año nuevo. Pero el resultado de:

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

es NULL y no 1 porque MAX (número) es NULL y no 0

Respuesta

31

Bueno, como no hay una fecha como 2014, que se puede esperar nula, debido a que el máximo de nada es realmente nada.

Pero hacer esto:

COALESCE(MAX(number),0) 

Lo que significa: llegar lo primero que no nulo de la lista siguiente, así que si su max es nulo, te dará 0

+0

¡Muchas gracias! ;-) – Donovant

+0

Su estándar mysql que muestra la salida 'null' cuando no hay resultados no se encuentra' 0'. Puede usar 'COALESCE (MAX (número), 0)' como 'Nanne' le está diciendo. –

12

COALESCE obras, pero IFNULL me parece más claro.

IFNULL(MAX(number), 0) 

Si la primera expresión no es NULL, IFNULL() devuelve la expresión misma, de lo contrario devuelve el segundo parámetro. IFNULL() devuelve un valor numérico o de cadena, según el contexto en el que se utiliza.

Cuestiones relacionadas