Valori Null

Un valore NULL indica che il valore è sconosciuto. Questo tipo di valore è diverso da un valore zero o vuoto. Non esistono due valori Null uguali. I confronti tra due valori Null o tra un valore NULL e qualsiasi altro valore restituiscono UNKNOWN in quanto ogni valore NULL è sconosciuto.

In genere, i valori Null indicano dati sconosciuti, non applicabili o che verranno aggiunti in seguito. È possibile, ad esempio, che l'iniziale del secondo nome di un cliente non sia nota nel momento in cui il cliente emette un ordine.

Di seguito sono disponibili informazioni relative ai valori Null.

  • Per verificare i valori Null in una query, utilizzare IS NULL o IS NOT NULL nella clausola WHERE.
  • Quando i risultati della query vengono visualizzati nell'editor del codice di SQL Server Management Studio, i valori Null sono contrassegnati con (null) nel set di risultati.
  • È possibile inserire valori Null in una colonna specificando esplicitamente NULL in un'istruzione INSERT o UPDATE, lasciando la colonna all'esterno dell'istruzione INSERT oppure, quando si aggiunge una nuova colonna a una tabella esistente, utilizzando l'istruzione ALTER TABLE.
  • Non è possibile utilizzare i valori Null nel caso di informazioni necessarie per distinguere due righe di una tabella, ad esempio le chiavi primarie.

Nel codice di un programma è possibile verificare la presenza di valori Null in modo che alcuni calcoli vengano eseguiti solo sulle righe che includono dati validi, ovvero non NULL. In un report, ad esempio, è possibile stampare la colonna del codice fiscale solo se include dati non NULL. La rimozione dei valori Null prima dell'esecuzione di calcoli può essere utile in quanto è possibile che alcuni calcoli, ad esempio una media, non vengano eseguiti correttamente se si includono colonne con valori NULL.

Se è probabile che i dati includano valori Null indesiderati, è consigliabile creare query e istruzioni per la modifica dei dati che consentano di rimuovere tali valori o trasformarli in valori di altro tipo.

ms191504.note(it-it,SQL.90).gifImportante:
Per ridurre al minimo le operazioni di manutenzione e i possibili effetti sulle query o sui report esistenti, è consigliabile utilizzare i valori Null il meno possibile. Pianificare le query e le istruzioni per la modifica dei dati in modo che l'effetto dei valori Null sia minimo.

Se i dati includono valori Null, gli operatori logici e di confronto possono restituire potenzialmente un terzo valore, ovvero UNKNOWN, anziché TRUE o FALSE . Questa logica a tre valori, anche se necessaria, è causa di numerosi errori nelle applicazioni. Nelle tabelle riportate di seguito viene descritto il risultato ottenuto dal confronto tra valori Null.

Nella tabella seguente viene descritto il risultato ottenuto quando si applica l'operatore AND a due operandi booleani.

AND TRUE UNKNOWN FALSE

TRUE

TRUE

UNKNOWN

FALSE

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

FALSE

FALSE

FALSE

Nella tabella seguente viene descritto il risultato ottenuto quando si applica l'operatore OR a due operandi booleani.

OR TRUE UNKNOWN FALSE

TRUE

TRUE

TRUE

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

FALSE

TRUE

UNKNOWN

FALSE

Nella tabella seguente viene illustrato il modo in cui l'operatore NOT nega, ovvero inverte, il risultato di un operatore booleano.

Espressione booleana a cui viene applicato l'operatore NOT Restituisce

TRUE

FALSE

UNKNOWN

UNKNOWN

FALSE

TRUE

Nello standard SQL-92 sono state introdotte le parole chiave IS NULL e IS NOT NULL che consentono di verificare la presenza di valori Null.

Espressione booleana a cui viene applicato l'operatore IS NULL Restituisce Espressione booleana a cui viene applicato l'operatore IS NOT NULL Restituisce

TRUE

FALSE

TRUE

TRUE

NULL

TRUE

NULL

FALSE

FALSE

FALSE

FALSE

TRUE

Transact-SQL offre inoltre un'estensione per l'elaborazione di valori Null. Se l'opzione ANSI_NULLS è impostata su OFF, i confronti tra valori Null, ad esempio NULL = NULL, restituiscono TRUE mentre i confronti tra un valore NULL e qualsiasi altro dato restituiscono FALSE.

Vedere anche

Concetti

Supporto dei valori Null
Modifica delle proprietà delle colonne

Altre risorse

AND (Transact-SQL)
NOT (Transact-SQL)
CREATE TABLE (Transact-SQL)
OR (Transact-SQL)
ISNULL (Transact-SQL)
WHERE (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005