web-dev-qa-db-fra.com

Comment définir 0 avec la fonction MAX quand il est NULL?

Je voudrais comprendre comment définir la valeur 0 de l'attribut quand il est NULL avec la fonction MAX. Par exemple:

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

Le nombre est un champ incrémentiel, mais il s'est fixé à 1 lorsque la nouvelle année est arrivée. Mais résultat de:

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

est NULL et non 1 car MAX (nombre) est NULL et non 0

29
Donovant

Eh bien, comme il n'y a pas de date comme 2014, vous vous attendriez à null, car le maximum de rien n'est en fait rien.

Mais faites ceci:

COALESCE(MAX(number),0)

Ce qui signifie: récupérez le premier élément non nul de la liste suivante, donc si votre max est nul, cela vous donnera 0

42
Nanne

COALESCE fonctionne, mais IFNULL me semble plus clair.

IFNULL(MAX(number), 0)

Si la première expression n'est pas NULL, IFNULL () renvoie l'expression elle-même, sinon elle renvoie le deuxième paramètre. IFNULL () renvoie une valeur numérique ou chaîne, selon le contexte dans lequel elle est utilisée.

19
Demis Palma ツ