MySQL Voir: Comment puis-je définir la valeur par défaut d'un champ calculé à 0?
-
19-09-2019 - |
Question
J'utilise la déclaration suivante pour créer un calcul de pourcentage dans une vue:
round (((Surveys
.RejectedAsAdvertising
/ Surveys
.Responses
) * 100), 0) AS PercentageAdvertising
En fait, je divise le nombre de réponses à une certaine question (dans ce cas, est quelque chose considéré comme la publicité) par le nombre total de réponses.
En fin de compte, j'ai des colonnes qui affichent des pourcentages pour chacune des cinq réponses possibles de l'enquête ( « Est-ce la publicité? », « Est-ce ennuyeux? », Etc.).
Cela fonctionne parfaitement, mais il y a une chose que je voudrais modifier. Lorsqu'un type de réponse (par exemple, la publicité) n'a pas de votes, mon champ calculé reçoit une valeur NULL.
Lors de la définition de mon point de vue, comment puis-je spécifier une valeur par défaut de 0?
Merci.
La solution
Vous avez besoin d'un coalesce
là-dedans. Il sélectionne le premier argument non NULL, vous devez donc quelque chose comme:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
Ensuite, lorsque le résultat du tour est NULL, il vous donnera à zéro à la place.
Autres conseils
COALESCE est l'approche privilégiée , car il est un moyen standard ANSI d'évaluation de manipulation lorsqu'un paramètre est nul. Être ANSI, la même syntaxe est prise en charge sur Oracle, SQL Server, Postgres, etc., ce qui rend la requête plus facile au port entre les bases de données en cas de besoin.
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL est le MySQL syntaxe spécifique:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)