16 . Il linguaggio SQL Vers . 10.4 – Febbraio 2025
21 ) Funzioni condizionali in MySQL : CASE , IF , IFNULL e NULLIF
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 )
SELECT CASE id WHEN 1 THEN ' primo ' WHEN 2 THEN ' secondo ' ELSE ‘ altro ’ END FROM Tabella ;
Risultato :
+ ------------------------------------------------------------------------ +
| primo | | secondo | | altro | + ------------------------------------------------------------------------ +
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 )
SELECT id , nome , prezzo , IF (( prezzo > 100.00 AND prezzo < 200.00 ),' Medio Alto ',' Scarto ') AS valutazione FROM Tabella ;
Risultato :
+ ---- + ---------- + -------- + ------------- + | id | nome | prezzo | valutazione | + ---- + ---------- + -------- + ------------- + | 1 | pippo | 44.25 | Scarto | | 2 | pluto | 144.75 | Medio Alto | | 3 | paperino | 200.00 | Scarto | + ---- + ---------- + -------- + ------------- +
IFNULL ( La funzione IFNULL intercetta eventuali errori del MySQL ( che restituisce NULL ) e li gestisce in modo predeterminato . La funzione ISNULL accetta due parametri : il primo è il dato da verificare , il secondo è il risultato da restituire qualora il primo argomento sia NULL )
SELECT id , nome , note , IFNULL ( note ,' Questo campo è a NULL ') AS ‘ Esito IF ’ FROM Tabella ;
Risultato :
+ ---- + ---------- + ----------------------- + -------------------------------------- + | id | nome | note | Esito IF | + ---- + ---------- + ----------------------- + -------------------------------------- + | 1 | pippo | NULL | Questo campo è a NULL | 2 | pluto | praticamente un pazzo | praticamente un pazzo | | 3 | paperino | NULL | Questo campo è a NULL + ---- + ---------- + ----------------------- + -------------------------------------- +
NULLIF ( Questa funzione accetta due argomenti che vengono confrontati tra loro ; se sono uguali restituisce NULL in caso contrario restituisce il primo argomento )
SELECT * INTO newtab FROM Tabella AS t1 , Tabella AS t2 ;
Risultato :
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 84