Ricerca…


introduzione

NULL in SQL, oltre alla programmazione in generale, significa letteralmente "niente". In SQL, è più facile capire come "l'assenza di qualsiasi valore".

È importante distinguerlo da valori apparentemente vuoti, come la stringa vuota '' o il numero 0 , nessuno dei quali è in realtà NULL .

È inoltre importante fare attenzione a non includere NULL tra virgolette, come 'NULL' , che è consentito nelle colonne che accettano il testo, ma non è NULL e può causare errori e set di dati errati.

Filtro per NULL nelle query

La sintassi per il filtraggio di NULL (ovvero l'assenza di un valore) nei blocchi WHERE è leggermente diversa rispetto al filtro per valori specifici.

SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;

Si noti che poiché NULL non è uguale a nulla, nemmeno a se stesso, usando gli operatori di uguaglianza = NULL o <> NULL (o != NULL ) produrrà sempre il valore di verità di UNKNOWN che verrà rifiutato da WHERE .

WHERE filtra tutte le righe in cui la condizione è FALSE o UKNOWN e mantiene solo le righe in cui la condizione è TRUE .

Colonne di Nullable nei tavoli

Quando si creano tabelle è possibile dichiarare una colonna come nullable o non annullabile.

CREATE TABLE MyTable
(
    MyCol1 INT NOT NULL, -- non-nullable
    MyCol2 INT NULL      -- nullable
) ;

Di default ogni colonna (eccetto quelle nel vincolo della chiave primaria) è nullable a meno che non si imposti esplicitamente il vincolo NOT NULL .

Se si tenta di assegnare NULL a una colonna non nullable, si verificherà un errore.

INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ;  -- works fine

INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;  
        -- cannot insert
        -- the value NULL into column 'MyCol1', table 'MyTable'; 
        -- column does not allow nulls. INSERT fails.

Aggiornamento dei campi su NULL

L'impostazione di un campo su NULL funziona esattamente come con qualsiasi altro valore:

UPDATE Employees 
SET ManagerId = NULL
WHERE Id = 4

Inserimento di righe con campi NULL

Ad esempio inserendo un dipendente senza numero di telefono e nessun manager nella tabella di esempio Dipendenti :

INSERT INTO Employees
    (Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
    (5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow