På flera språk hanteras NULL olika:De flesta känner till tvåvärdslogik där true
och false
är de enda jämförbara värdena i booleska uttryck (even is false definieras som 0 och sant som allt annat).
I Standard SQL måste du tänka på logik med tre värden. NULL behandlas inte som ett verkligt värde, man kan snarare kalla det "okänt". Så om värdet är okänt är det inte klart om state
i ditt fall är 0, 1 eller något annat. Så NULL != 1
resultat till NULL
igen.
Detta drar slutsatsen att varhelst du filtrerar något som kan vara NULL, måste du behandla NULL-värden själv. Observera att syntaxen också är annorlunda:NULL-värden kan endast jämföras med x IS NULL
istället för x = NULL
. Se Wikipedia för en sanningstabell som visar resultaten av logiska operationer.