V několika jazycích se s hodnotou NULL zachází odlišně:Většina lidí ví o dvouhodnotové logice, kde true
a false
jsou jediné srovnatelné hodnoty v booleovských výrazech (i když je false, je definováno jako 0 a true jako cokoli jiného).
Ve standardním SQL musíte přemýšlet o tříhodnotové logice. NULL není považována za skutečnou hodnotu, spíše ji můžete nazvat "neznámá". Pokud je tedy hodnota neznámá, není jasné, zda ve vašem případě state
je 0, 1 nebo cokoliv jiného. Takže NULL != 1
výsledky na NULL
znovu.
Z toho vyplývá, že kdekoli filtrujete něco, co může být NULL, musíte hodnoty NULL ošetřit sami. Všimněte si, že syntaxe je také odlišná:hodnoty NULL lze porovnávat pouze s x IS NULL
místo x = NULL
. Podívejte se na Wikipedii, kde najdete pravdivostní tabulku ukazující výsledky logických operací.