W kilku językach NULL jest obsługiwane inaczej:Większość ludzi wie o logice dwuwartościowej, gdzie true
i false
są jedynymi porównywalnymi wartościami w wyrażeniach logicznych (nawet jeśli fałsz jest definiowany jako 0, a prawda jak cokolwiek innego).
W standardowym SQL musisz myśleć o logice trójwartościowej. NULL nie jest traktowany jako wartość rzeczywista, można go raczej nazwać „nieznanym”. Więc jeśli wartość jest nieznana, nie jest jasne, czy w twoim przypadku state
wynosi 0, 1 lub cokolwiek innego. Więc NULL != 1
wyniki do NULL
ponownie.
To kończy się, że gdziekolwiek odfiltrujesz coś, co może mieć wartość NULL, musisz sam traktować wartości NULL. Zauważ, że składnia również jest inna:wartości NULL można porównać tylko z x IS NULL
zamiast x = NULL
. Zobacz Wikipedię, aby zobaczyć tabelę prawdy przedstawiającą wyniki operacji logicznych.