Corsi on-line

MySQL: COALESCE() come alternativa ai costrutti IF/ELSE

COALESCE() è una funzione poco conosciuta di MySQL che ha il compito di restituire il primo valore non NULL di una lista o semplicemente NULL nel caso in cui non siano disponibili valori non NULL; nello stesso modo, essa può essere utilizzata nelle espressioni basate sulla clausola WHERE() per mettere a disposizione un valore alternativo nel caso in cui il valore originale sia NULL.

MySQLDescritta in questo modo, le occasioni di utilizzo per tale funzione potrebbero apparire poco frequenti, ma COALESCE() rappresenta anche un sostituto molto più pratico del costrutto IF/ELSE. A questo proposito si analizzi il seguente esempio dove viene introdotta un’istruzione di tipo IF/THEN/ELSE dove le condizioni da valutare sono molteplici:

IF valoreA is not NULL THEN
result = valoreA;
ELSIF valoreB is not NULL THEN
result = valoreB;
ELSIF valoreC is not NULL THEN
result = valoreC;
ELSE
result = NULL;
END IF;

Quindi, se (IF) il primo valore non è NULL allora (THEN) il risultato sarà pari al valore di valoreA, stesso discorso per quanto riguarda il secondo e il terzo valore, altrimenti (ELSE) il risultato sarà NULL; tale espressione potrà essere riscritta in questo modo:

COALESCE(valoreA,valoreB,valoreC,..)

Quindi, un’istruzione come la seguente:

mysql> SELECT COALESCE(NULL, 4, 5);

non potrà che restituire “4” in output, questo perché esso è il primo valore non NULL presente in lista; nello stesso modo la query:

mysql> SELECT COALESCE(NULL, NULL, NULL);

non potrà che restituire “NULL” in quanto nessuno dei valori in elenco è non NULL. COALESCE() potrebbe essere confuso con IFNULL() ma non è equivalente ad esso, quest’ultimo infatti prende in considerazione due espressioni e se la prima non è NULL la restituisce, diversamente restituisce la seconda.

Post correlati
I più letti del mese
Tematiche