MySQL Vista: Come faccio a impostare il valore predefinito di un campo calcolato a 0?
-
19-09-2019 - |
Domanda
Io uso la seguente istruzione per creare un calcolo percentuale in una vista:
round (((Surveys
.RejectedAsAdvertising
/ Surveys
.Responses
) * 100), 0) AS PercentageAdvertising
In sostanza, divido il numero di risposte a una certa domanda (in questo caso, è qualcosa considerato pubblicità) per il numero totale di risposte.
Alla fine, ho colonne che mostrano le percentuali per ciascuna delle cinque possibili risposte al sondaggio ( "E 'la pubblicità?", "E' noioso?", Ecc.).
Questo funziona perfettamente, ma c'è una cosa che vorrei modificare. Quando un tipo di risposta (ad esempio, la pubblicità) non ha alcun voto, il mio campo calcolato riceve un valore NULL.
Quando si definisce mio punto di vista, come posso specificare un valore predefinito di 0?
Grazie.
Soluzione
Hai bisogno di una coalesce
in là. Seleziona il primo argomento non NULL, quindi è necessario qualcosa di simile:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
Poi, quando il risultato del round è NULL, che vi darà zero invece.
Altri suggerimenti
COALESCE è l'approccio preferito , perché è un modo standard ANSI di movimentazione valutazione quando una parametro è nullo. Essendo ANSI, la stessa sintassi è supportato su Oracle, SQL Server, Postgres, ecc, rendendo più facile la query alla porta tra i database, se necessario.
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL è la sintassi specifica MySQL:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)