lug
1
2010

Mysql e l’uso del valore NULL

closeQuesto articolo è stato pubblicato 1 anno 7 mesi 13 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

Intorno al valore NULL di Mysql c’è tanta confusione. Questa confusione nasce quasi sempre dall’associazione mentale che viene fatta da molti NULL=vuoto, dove per vuoto si intende la stringa vuota (per capirci, questa ”).

Cosi non è!

Prima cosa da ricordare è che il valore NULL di mysql non significa vuoto.

Vediamo meglio cosa significa e, come e quando, usarlo.

Quello che segue è riferito ai campi di tipo STRING.

Diciamo subito che un campo può essere definito NULL o NOT NULL.
Un campo definito come NULL può assumere tre valori: stringa, vuoto, NULL.
Un campo definito come NOT NULL può assumere due valori: stringa, vuoto.

Come potete notare i due campi hanno in comune il fatto che entrambi possono essere riempiti o lasciati vuoti. Ma definire un campo come NOT NULL non significa voler settare il vincolo che sia obbligatorio e non vuoto? Obbligatorio e non vuoto non sono la stessa cosa. Settando un campo a NOT NULL lo si imposta come obbligatorio ma non come non vuoto. Significa che in ogni caso dovremmo mettere un valore in quel campo, ma quel valore potrà anche essere la stringa vuota ”.

Altro concetto importante da chiarire è che l’uso dei campi NULL influenzerà anche le vostre query! Il controllo del tipo where campo=” (oppure where campo!=”) non funzionerà su un campo NULL. Dovrete quindi usare l’operatore where campo IS NULL (oppure where campo IS NOT NULL).
Se non fate attenzione al momento dell’inserimento, potreste mischiare campi vuoti con campi null e avere risultati non attesi dalle vostre select!

NULL dovrebbe essere visto più come una condizione che come un valore. Funzioni di ordinamento come ORDER BY e GROUP BY si comportano in maniera diversa con i valori NULL. Le funzioni di aggregazione come SUM, AVG e COUNT ignorano i valori NULL.

Detto questo, dovrebbe essere molto più facile capire come e quando usare un campo di tipo NULL. Di norma si dovrebbe lavorare sempre con campi NOT NULL e lasciare l’uso dei campi NULL a situazioni nelle quali si vogliono sfruttare le sue particolari caratteristiche.

Il mio consiglio è, quindi, il seguente: definite i vostri campi sempre come NOT NULL, settate il valore predefinito a ” (stringa vuota) e quando dovete effettuare delle select operate sempre con campo=” oppure campo!=”.

Come detto all’inizio, questo non vale per i gruppi di dati Numerici e Date per i quali non è prevista la stringa vuota. In quel caso è necessario avere dei campi NULL.

Ecco alcuni link utili dalla documentazione ufficiale di Mysql:
Lavorare con null
Problemi con null
Operatori IS NULL e IS NOT NULL

1 Comment + Add Comment

Leave a comment

*