76 votes

Remplacer null par 0 dans MySQL

Je reçois NULL dans les résultats d'une opération dans MySQL.

Existe-t-il un moyen de convertir le NULL en la valeur 0 ?

112voto

Teekin Points 4544

Oui, en utilisant COALESCE .

SELECT COALESCE(null\_column, 0) AS null\_column FROM whatever;

COALESCE parcourt la liste des valeurs que vous lui donnez, et retourne la première valeur non nulle.

3 votes

+1 : COALESCE est ANSI, supporté par SQL Server 2000+, Oracle 9i+, MySQL 4.1+, je ne connais pas la version de PostgreSQL ou SQLite...

1 votes

MySQL est mentionné dans le titre. J'ai ajouté un tag pour cela.

1 votes

Je pense que toutes les bases de données 3VL avec une interface SQL supportent coalesce() . Un exemple concret, c'était dans MySQL 3.23 ce qui est aussi proche du fond du baril que vous pouvez l'être.

80voto

Arif Points 1371

J'ajoute cette réponse parce que personne n'a mentionné IFNULL fonction

Vous pouvez utiliser IFNULL

SELECT IFNULL(column_name, 0) FROM table_name;

IFNULL retournera la valeur de la colonne (si elle a quelque chose d'autre que NULL ) sinon le deuxième paramètre passé (dans ce cas 0 ).

0 votes

Merci, fonctionne parfaitement dans mysql.

0 votes

Cela ne fait que sélectionner et remplacer, plutôt que de mettre réellement à jour la table.

0 votes

Puis-je le faire avec plusieurs colonnes ?

19voto

user2213708 Points 59

Si vous vous êtes trompé et que vous avez des NULL dans la disposition de la table existante et que vous voulez des zéros, voici la solution :

UPDATE `table` SET `somefield`=0 WHERE `somefield` is null

1 votes

C'est la meilleure réponse

0 votes

C'est exactement ce que je voulais Merci.

0 votes

J'ai presque été trompé par la réponse acceptée. C'est exactement ce que je voulais. Merci !

7voto

Colin Hebert Points 40084

Il y a le COALESCE qui renvoie le premier paramètre non nul, dans votre cas :

COALESCE(field, 0)

Mais vous pouvez utiliser ceci si vous en voulez plus :

COALESCE(field1, field2, 0)

4voto

Sjoerd Points 34671

MySQL :

SELECT COALESCE(Mycolumn, 0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X