22 Voix

MySQL: SELECT 0 au lieu de NULL

Question de Invité | 04/05/2021 à 15:47

Dans l'une de mes requêtes MySQL, il peut arriver de temps en temps que les résultats contiennent l'une ou l'autre valeur NULL, car la cellule correspondante n'a pas encore été ajoutée à la base de données.

Pour pouvoir néanmoins traiter les valeurs dans mon script PHP, j'aimerais que MySQL renvoie le nombre "0" au lieu de "NULL".

Existe-t-il une possibilité dans MySQL de déterminer directement dans la requête que "0" doit être renvoyé chaque fois que le résultat est "NULL"?

RépondrePositifNégatifDateVoix
2Meilleure Réponse2 Voix

Vous pouvez simplement utiliser la fonction COALESCE().

Voici un petit exemple:

SELECT id, COALESCE(col, 0) FROM tab

Dans cette requête, nous aimerions lire les colonnes "id" et "col" de la table "tab". Dans le cas où la valeur provenant de "col" est "NULL", nous aimerions avoir "0" plutôt que "NULL".

COALESCE() renvoie la première valeur qui n'est pas NULL à partir de la ligne des paramètres passés. Ainsi, l'utilisation de COALESCE(col, 1) renverrait "1" chaque fois que "col" est NULL.

Vous pouvez également utiliser cette fonction avec plusieurs paramètres. Par exemple, COALESCE(col1, col2, 0). Ici, le résultat serait "col1" chaque fois que la valeur de "col1" n'est pas NULL. Si "col1" est NULL, MySQL essaie la valeur de "col2" et la renvoie si elle n'est pas NULL. Si les deux, "col1" et "col2" sont NULL, MySQL retombe sur 0.
05/05/2021 à 12:45

RépondrePositif Négatif
11 Vote

Au lieu de COALESCE(), vous pouvez également utiliser la fonction IFNULL().

La construction peut être utilisée de la même manière que COALESCE():

SELECT id, IFNULL(col, 0) FROM tab

C'est: si la première valeur passée à IFNULL est NULL (ici la valeur de "col"), prenez la deuxième valeur (ici 0).

Cependant, vous ne pouvez utiliser IFNULL() qu'avec 2 paramètres. Son utilisation n'est donc pas aussi flexible que COALESCE().
05/05/2021 à 23:47

RépondrePositif Négatif
00 Voix

Un autre petit conseil: dans MySQL, une valeur DEFAULT peut être définie pour chaque colonne.

Peut-être que cela peut vous aider. Parce que si vous définissez la valeur DEFAULT de votre colonne sur «0», cette valeur est écrite automatiquement dans chaque nouvelle cellule lorsqu'une nouvelle ligne est ajoutée à la base de données.

Bien sûr, cette astuce ne peut pas être utilisée lorsque vous essayez des valeurs de lignes inexistantes.
06/05/2021 à 22:37

RépondrePositif Négatif
00 Voix

Une autre possibilité est d'utiliser la condition IF de MySQL:

SELECT id, IF(col IS NULL, 0, col) FROM tab

Dans cette condition IF, nous vérifions si "col" est NULL via "col IS NULL". Si oui, nous retournons l'alternative (ici c'est 0); sinon, nous retournons le contenu de "col".
07/05/2021 à 20:03

RépondrePositif Négatif
Répondre

Sujets Connexes

Firebird: SELECT avec LIMIT

Question | 1 Réponse

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.