Funzioni condizionali

MySQL
di Risorse.net

Le funzioni condizionali di MySQL consentono di eseguire query verificando che un'istruzione sia vera o falsa.
Come per tutti i linguaggi di programmazione, la condizione e il relativo comportamente viene suddiviso su tre passaggi:
  1. La condizione
  2. Se la condizione è vera, esegue questa istruzione
  3. Se la condizione è falsa, esegue un'altra istruzione
Il classico If ... Then ... Else ...

MySQL prevede diverse sintassi per le verifiche condizionali. Vediamone alcune:

La funzione IF
La funzione IF permette di confrontare dei campi e restituire delle istruzioni diversi a seconda della veridicità della condizione iniziale:

SELECT IF(primoCampo != secondoCampo, 1, 0) FROM nomeTabella;

Con questo tipo di query, MySQL confronta il primoCampo con il secondoCampo. Se fossero diversi, restituirebbe 1, altrimenti 0.

Vediamo un caso banale ma pratico. Possiamo effettuare la verifica condizionale IF anche con dei numeri. Ad esempio:

SELECT IF(1<2, 'vero', 'falso');

In questo caso, MySQL restituisce "vero", perché 1 è minore di 2.

IFNULL
Questa funzione può risultare molto comoda per intercettare i NULL che MySQL potrebbe restituire. IFNULL infatti intercetta i casi di NULL e restituisce ciò che il database administrator desidera.

Può essere utile quando si divide un campo per un altro quando non si sa cosa contengano i due campi (magari perché dinamicamente modificati dagli utenti). Se infatti il secondo campo fosse zero ( 0 ), dividere per 0 restituisce un errore, per MySQL quindi è NULL. Onde evitare questo problema, si usa il condizionale IFNULL. Vediamo un esempio con dei numeri:

SELECT IFNULL(2/0,'impossibile');

In questo caso MySQL, invece di restituire NULL, restituisce "impossibile".

CASE
Questo condizionale consente a MySQL di verificare più campi, come per il Select Case di Visual Basic o Switch() per i linguaggi derivati da C (Java, Javascript, C# ecc.).

Quindi, invece di avere una sola condizione, CASE consente di effettuare più verifiche, ad esempio:

SELECT CASE 1 WHEN primoCampo = 'primoValore' THEN 1 WHEN secondoCampo = 'secondoValore' THEN 2 WHEN terzoCampo = 'terzoValore' THEN 3 ELSE 'nessuna condizione è vera' END;

In questo modo, se uno dei valori del campo primoCampo è uguale a "primoValore", allora MySQL restituisce 1. E così via per il secondoCampo e il terzoCampo. Se nessuna condizione è soddisfatta, MySQL restituisce "nessuna condizione è vera". Il comando END finale, chiude il CASE.

© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net /mysql/funzioni_condizionali.asp?print=ok