- CASE
- IF()
- IFNULL()
- NULLIF()
Vediamole nel dettaglio.
CASE
Mediante il costrutto CASE … WHEN è possibile creare delle istruzioni condizionali piuttosto complesse prevedendo non solo un’unica condizione, ma una serie di condizioni alternative. Ad esempio:
SELECT CASE mese WHEN 1 THEN 'Gennaio' WHEN 2 THEN 'Febbraio' WHEN 3 THEN 'Marzo' WHEN 4 THEN 'Aprile' WHEN 5 THEN 'Maggio' WHEN 6 THEN 'Giugno' WHEN 7 THEN 'Luglio' WHEN 8 THEN 'Agosto' WHEN 9 THEN 'Settembre' WHEN 10 THEN 'Ottobre' WHEN 11 THEN 'Novembre' WHEN 12 THEN 'Dicembre' END FROM calendario ORDER BY mese ASC;
Oppure:
SELECT CASE nazione WHEN 'IT' THEN 'Italia' ELSE 'Estero' END FROM utenti;
La funzione IF()
La funzione IF è più semplice di CASE e consente di verificare un’unica condizione. La funzione prevede tre argomenti: il primo è l’espressione da verificare, il secondo è il risultato restituito in caso in cui l’espressione sia vera, il terzo il risultato da restituire nel caso l’espressione sia falsa.
IF (Espressione,Vero,Falso)
Vediamo un esempio:
SELECT nome, cognome, IF (nazione = 'IT','Italia','Estero') AS paese FROM utenti;
La funzione IFNULL()
La funzione IFNULL intercetta eventuali errori del MySQL (che restituisce NULL) e li gestisce in modo prederminato. La funzione ISNULL accetta due parametri: il primo è il dato da verificare, il secondo è il risultato da restituire qualora il primo argomento sia NULL.
Facciamo un esempio:
SELECT IFNULL(10/0,'Non posso dividere per zero!'); -> Non posso dividere per zero!
La funzione NULLIF()
Questa funzione accetta due argomenti che vengono confrontati tra loro; se sono uguali restituisce NULL in caso contrario restituisce il primo argomento.
Vediamo un esempio:
SELECT NULLIF(1,1); -> NULL SELECT NULLIF(1,2); -> 1