Mam tabelę, która ma kolumnę wartości, które mogą być rowTypeID = (1,2,3 lub null). Chciałbym napisać zapytanie, które zwraca dowolny wiersz, który nie ma wartości 3 w nim. W tym przykładzie chcę wszystkie NULL wiersze wraz ze wszystkimi 1,2 wiersze po prostu nie chcę wierszy o wartości 3Powrót SQL Server Wiersze, które nie są równe <> do wartości i NULL
Ustaw ANSI null ON jest obecnie ustawiony dla bazy danych.
Jestem ciekaw, dlaczego nie mogę napisać
select * from myTable where myCol <> 3
To zapytanie nie zwróci żadnych wierszy, które mają wartość NULL w kolumnie Mycol
muszę napisać
select * from my Table where myCol <> 3 or myCol Is NULL
Czy zawsze muszę dołączyć IS NULL lub czy mogę to ustawić, aby klauzula where myCol <> 3 zwróci wiersze, które mają wartość Null jako wartość dla mojego Col
To jest sposób NULL działa, każde porównanie z nim jest fałszywe, z wyjątkiem IS NULL i NIE JEST NULL – kurosch
@kurosch: Ostrożnie po linii, NULL = NULL również zwróci false, ponieważ jest to porównanie? – Marcel
@Marcel: tak, NULL = NULL jest zawsze fałszem, a dla tej sprawy tak jest NULL <> NULL :-) – kurosch