16 . Il linguaggio SQL Vers . 9.3 – Marzo 2024
Il valore NULL
Il linguaggio SQL prevede un particolare simbolo indicato con NULL che viene utilizzato per indicare diverse situazioni ( ad esempio quando il valore esiste ma è sconosciuto oppure quando il valore non esiste ). Il valore del simbolo NULL assume un ruolo significativo nel risultato di una espressione logica o aritmetica .
Esistono alcune regole fondamentali da ricordare : a ) un ’ espressione aritmetica ha come risultato un valore sconosciuto ( UNKNOWN ) se un operando ha valore NULL ; b ) il confronto tra un valore NULL ed un qualsiasi altro valore ( NULL compreso ) produce sempre un valore UNKNOWN ; c ) il valore NULL non è una costante ( quindi non può apparire in una espressione ); d ) se il predicato della clausola WHERE ha valore UNKNOWN la ennupla non viene considerata ; e ) nelle funzioni aggregate in generale le righe con valore NULL dell ’ attributo considerato non vengono considerate ; f ) il valore UNKNOWN è un valore di verità come TRUE e FALSE
Vediamo ora i valori di verità degli operatori AND , OR , NOT in una logica a tre valori ( TRUE , FALSE , UNKNOWN ):
AND |
FALSE |
TRUE |
UNKNOWN |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
FALSE |
TRUE |
UNKNOWN |
UNKNOWN |
FALSE |
UNKNOWN |
UNKNOWN |
OR |
FALSE |
TRUE |
UNKNOWN |
FALSE |
FALSE |
TRUE |
UNKNOWN |
TRUE |
TRUE |
TRUE |
TRUE |
UNKNOWN |
UNKNOWN |
TRUE |
UNKNOWN |
VALORI FALSE TRUE UNKNOWN
NOT TRUE FALSE FALSE
Attenzione al significato di NULL in quanto l ’ espressione WHERE Stipendio = NULL è errata nella sintassi non essendo il valore NULL una costante , mentre l ’ espressione WHERE Stipendio IS NULL è sintatticamente corretta . N . B . NULL in pratica non è considerato un valore ma un simbolo che indica “ valore mancante ”.
Nelle query per controllare se il valore di un attributo è presente oppure mancante ( ossia è uguale a NULL ) si ricorre ai predicati IS NULL ed IS NOT NULL nelle condizioni della clausola WHERE .
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 39