Sök…


Introduktion

NULL i SQL, liksom programmering i allmänhet, betyder bokstavligen "ingenting". I SQL är det lättare att förstå som "frånvaron av något värde".

Det är viktigt att skilja det från till synes tomma värden, till exempel den tomma strängen '' eller antalet 0 , varken är faktiskt NULL .

Det är också viktigt att vara försiktig så att du inte bifogar NULL i citat, till exempel 'NULL' , som är tillåtet i kolumner som accepterar text, men är inte NULL och kan orsaka fel och felaktiga datamängder.

Filtrering för NULL i frågor

Syntaxen för filtrering för NULL (dvs. frånvaron av ett värde) i WHERE block är något annorlunda än filtrering för specifika värden.

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

Observera att eftersom NULL inte är lika med någonting, inte ens till sig själv, använder jämställdhetsoperatörer = NULL eller <> NULL (eller != NULL ) alltid sanningsvärdet för UNKNOWN som kommer att avvisas av WHERE .

WHERE filtrerar alla rader att villkoret är FALSE eller UKNOWN och bara rader att villkoret är TRUE .

Nullable kolumner i tabeller

När du skapar tabeller är det möjligt att förklara en kolumn som nullable eller non-nullable.

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

Som standard är varje kolumn (utom de som är i primär nyckelbegränsning) nullable om vi inte uttryckligen ställer NOT NULL begränsning.

Att försöka tilldela NULL till en icke-nullable kolumn kommer att resultera i ett fel.

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.

Uppdaterar fält till NULL

Att ställa in ett fält till NULL fungerar precis som med något annat värde:

UPDATE Employees 
SET ManagerId = NULL
WHERE Id = 4

Infoga rader med NULL-fält

Till exempel infoga en anställd utan telefonnummer och ingen chef i tabellen Anställda :

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow