Comment gérer de manière conditionnelle la division par zéro avec MySQL
Dans MySQL, cette requête pourrait jeter une division par zéro:
SELECT ROUND(noOfBoys / noOfGirls) AS ration
FROM student;
Si noOfGirls
est 0
alors le calcul échoue.
Quelle est la meilleure façon de gérer cela?
Je voudrais conditionnellement modifier la valeur de noOfGirls
à 1
quand il est égal à 0
.
Est-il un meilleur moyen?
source d'informationauteur Pushpendra Kuntal | 2011-11-23
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez faire une affaire:
Mais vous voudrez probablement:
Vous pouvez utiliser cette (expressif):
Qui va mettre la valeur NULL si il n'y a pas de filles, ce qui est effectivement ce que 0/0 devrait être dans SQL sémantique.
MySQL sera de toute façon donner
NULL
si vous essayez de faire0/0
comme le SQL sens foNULL
est "pas de données", ou dans ce cas, "je ne sais pas ce que cette valeur peut être".PLUS(x, 1)
peut être utilisé puisque le nombre de filles doit être positive:Mais il n'est pas très portable sur l'ensemble des implémentations de SQL.
Bien si vous souhaitez définir noOfGirls à 1 si c'est 0, alors la suivante devrait fonctionner:
vérifier si le dénominateur est égal à zéro et l'auteur de la proposition n'est pas NULL si oui, alors utiliser 'NaN'.