Warunki wyszukiwania porównanie NULL

Wartość NULL oznacza wartość danych dla kolumna jest nieznany lub niedostępny.Wartość NULL nie jest synonimem (binarne lub liczbowe wartości zerowej), ciąg znaków o zerowej długości lub puste (wartość znaku).Zamiast wartości null umożliwiają rozróżnienie między wpis zero (kolumn numerycznych) lub puste (znak kolumn) i nonentry (NULL dla kolumn numerycznych i znaków).

Można wprowadzić wartość NULL kolumna, dla której wartości null są dozwolone (określoną w instrukcja CREATE TABLE) na dwa sposoby:

  • SQL Serverautomatycznie wprowadza wartość NULL, jeśli wprowadzone dane nie i nie ma domyślnego lub ograniczenie domyślny typ danych lub kolumna.

  • Użytkownik może jawnie wprowadzić wartości NULL, wpisując NULL bez znaków cudzysłowu.Jeśli wpisany wyraz NULL kolumna znaku znakami cudzysłowu, jest traktowana jako litery N, U, L i L, a nie jako wartość null.

Po pobraniu wartości null aplikacji zwykle wyświetla ciąg znaków, takich jak NULL lub (NULL) lub (null) w odpowiedniej pozycji.Na przykład Color kolumna Product tabela zezwala na wartości null:

USE AdventureWorks2008R2;
GO
SELECT ProductID, Name, Color
FROM AdventureWorks2008R2.Production.Product
WHERE Color IS NULL

Porównanie wartości Null

Należy zachować ostrożność podczas porównywania wartości null.Zachowanie porównanie zależy od ustawienia opcji ustawienia ANSI_NULLS.

Gdy ANSI_NULLS USTAWIONA jest na porównanie, w której jeden lub więcej z wyrażeń ma wartość NULL nie dają PRAWDA lub FAŁSZ; Daje ono nieznany.Jest tak, ponieważ wartość jest nieznana nie może być porównywane logicznie inną wartość.Dzieje się tak, jeśli porównywana jest albo wyrażenie literału NULL lub dwóch wyrażeń są porównywane, a jeden z nich jest NULL.Na przykład następujące porównanie zawsze daje nieznany, gdy ANSI_NULLS jest na:

ytd_sales > NULL

Porównanie następujące również daje nieznany dowolnego czas zmienna zawiera wartość NULL:

ytd_sales > @MyVariable

Testowanie wartości NULL za pomocą klauzul jest ZEROWY lub nie jest NULL.Do klauzula WHERE można dodać złożoności.For example, the TerritoryID column in the AdventureWorks2008R2Customer table allows null values.Jeśli test na wartości null, oprócz innych instrukcja SELECT, musi zawierać IS NULL klauzula:

SELECT CustomerID, AccountNumber, TerritoryID
FROM AdventureWorks2008R2.Sales.Customer
WHERE TerritoryID IN (1, 2, 3)
   OR TerritoryID IS NULL

Transact-SQL obsługuje rozszerzenia, które pozwala na operatorów porównania Zwraca TRUE lub FALSE, porównując przeciwko wartości null.Ta opcja jest uaktywniana przez ustawienie ANSI_NULLS.Gdy ANSI_NULLS jest wyłączona porównań takich jak ColumnA = NULL return TRUE po ColumnA zawiera wartość null i podczas ColumnA wartość oprócz NULL.Także porównanie dwóch wyrażeń określających NULL zwrotu TRUE. Ustawienia ANSI_NULLS, nie wpływa na sprzężone kolumny, które zawierają wartości NULL.Wiersze z sprzężone kolumny, które zawierają wartości NULL nie są częścią zestaw wyników.Zestaw ANSI_NULLS, wyłączanie, następujące instrukcja SELECT zwraca wszystkie wiersze w Customer tabela, dla której Region jest wartością null:

SELECT CustomerID, AccountNumber, TerritoryID
FROM AdventureWorks2008R2.Sales.Customer
WHERE TerritoryID = NULL

Niezależnie od ustawienia ANSI_NULLS, wartości null są zawsze traktowane równe do celów ORDER BY, GROUP BY, i słowa kluczowe DISTINCT.indeks unikatowy lub ograniczenie UNIQUE, który umożliwia NULL mogą również zawierać tylko jeden wiersz z wartością NULL klucz.Kolejny wiersz z NULL jest odrzucana.Klucz podstawowy nie może mieć wartości NULL w dowolnej kolumna, która jest częścią klucza.

Obliczeń obejmujących NULL oszacować wartość null, ponieważ wynik musi być nieznane wszelkich czynników jest nieznany.Na przykład column1 + 1 ma wartość NULL, jeśli column1 ma wartość NULL.

Podczas przeszukiwanych kolumn obejmują czynności zdefiniowane jako dopuszczającej wartości null, wartości null lub niepustych można znaleźć w bazie danych z następującego wzoru:

WHERE column_name IS [NOT] NULL

Zobacz także

Odwołanie

Koncepcje