Szukaj…


Wprowadzenie

NULL w SQL, podobnie jak programowanie, oznacza dosłownie „nic”. W SQL łatwiej jest zrozumieć „brak jakiejkolwiek wartości”.

Ważne jest, aby odróżnić go od pozornie pustych wartości, takich jak pusty ciąg '' lub liczba 0 , z których żadna z nich nie ma w rzeczywistości wartości NULL .

Ważne jest również, aby uważać, aby nie zawrzeć wartości NULL w cudzysłowach, takich jak 'NULL' , co jest dozwolone w kolumnach akceptujących tekst, ale nie ma wartości NULL i może powodować błędy i nieprawidłowe zestawy danych.

Filtrowanie pod kątem NULL w zapytaniach

Składnia filtrowania dla NULL (tj. Brak wartości) w blokach WHERE jest nieco inna niż filtrowanie dla określonych wartości.

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

Zauważ, że ponieważ NULL nie jest równy niczym, nawet samemu sobie, użycie operatorów równości = NULL lub <> NULL (lub != NULL ) zawsze da wartość prawdy UNKNOWN które zostanie odrzucone przez WHERE .

WHERE filtruje wszystkie wiersze o warunku FALSE lub UKNOWN i zachowuje tylko wiersze o warunku TRUE .

Nullable kolumny w tabelach

Podczas tworzenia tabel można zadeklarować kolumnę jako dopuszczającą wartość zerową lub inną.

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

Domyślnie każda kolumna (poza ograniczeniami klucza podstawowego) ma wartość zerową, chyba że jawnie ustawimy ograniczenie NOT NULL .

Próba przypisania wartości NULL do kolumny, która nie ma wartości NULL, spowoduje błąd.

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.

Aktualizowanie pól do NULL

Ustawienie pola na NULL działa dokładnie tak samo, jak w przypadku każdej innej wartości:

UPDATE Employees 
SET ManagerId = NULL
WHERE Id = 4

Wstawianie wierszy z polami NULL

Na przykład wstawienie pracownika bez numeru telefonu i menedżera do przykładowej tabeli Pracownicy :

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow