MySQL-MariaDB sommare i valori di una riga con attenzione ai valori NULL

13 giugno 2017

​Come è noto il database MariaDB-MySQL mette a disposizione l'operatore + per effettuare delle somme:
​MariaDB > select 5+5;    
+-----+
| 5+5 |
+-----+
|  10 |
+-----+
1 row in set (0.00 sec)

Se vogliamo sommare più valori di una medesima riga, dobbiamo utilizzare l'operatore + e non la funzione SUM.
Supponiamo di avere una tabella "costi" con i campi Costo1, Costo2, Costo3, Costo4 e di voler ottenere da una select la somma di questi 4 campi.
MariaDB > SELECT Costo1+Costo2+Costo3+Costo4 FROM costi WHERE Id = '2';    
+-----------------------------+
| Costo1+Costo2+Costo3+Costo4 |
+-----------------------------+
|                         14 |
+-----------------------------+
1 row in set (0.00 sec)
Sin qui tutto bene, ma cosa succede se uno dei 4 campi assume il valore NULL? La query restituirà semplicemente NULL!
Abbiamo già visto in un altro post, "Database MariaDB o MySQL ed il valore NULL" , come il valore NULL non possa banalmente considerarsi pari a 0, ma vada trattato con le molle.

Anche in questo caso dobbiamo adottare gli opportuni accorgimenti e riscrivere la query nel seguente modo:
MariaDB > SELECT IFNULL(Costo1,0)+IFNULL(Costo2,0)+IFNULL(Costo3,0)+IFNULL(Costo4,0) FROM costi WHERE Id = '2';