På flere sprog håndteres NULL forskelligt:De fleste kender til logik med to værdier, hvor true
og false
er de eneste sammenlignelige værdier i booleske udtryk (selv er falsk er defineret som 0 og sand som alt andet).
I Standard SQL skal du tænke på logik med tre værdier. NULL behandles ikke som en reel værdi, man kan hellere kalde det "ukendt". Så hvis værdien er ukendt, er det ikke klart, om state
i dit tilfælde er 0, 1 eller noget andet. Så NULL != 1
resultater til NULL
igen.
Dette konkluderer, at uanset hvor du filtrerer noget, der kan være NULL, skal du selv behandle NULL-værdier. Bemærk, at syntaksen også er anderledes:NULL-værdier kan kun sammenlignes med x IS NULL
i stedet for x = NULL
. Se Wikipedia for en sandhedstabel, der viser resultaterne af logiske operationer.