Det sværreste i SQL er vel "tri-valued logic", det vil sige at mestre NULLs, som er det allersværreste at forstå i SQL. Prøv at gætte resultaterne af nedenstående, før du afvikler disse udtryk:

select * from dual where 1=1;
select * from dual where 1=0;
select * from dual where 1=null;
select * from dual where 1=null or 1=0;
select * from dual where 1=null or 1=1;

NULL er en helt speciel "værdi" i SQL og betyder ukendt. Det er dog lidt mere kompliseret end som så; NULL kan betyde, "Værdien eksisterer ikke". Derfor er X = NULL lig med NULL, fordi vi ikke ved om NULL er lig med X, derfor:

  • NULL er ikke lig med NULL
  • NULL er ikke lig med noget som helst andet
  • NULL er ikke lig med en tom streng

Ikke alle er enige om at denne tri-valued tilgang til SQL standarderne var den bedste løsning. Læs nogen underholdende kommentarer af bl.a. Chris Date og Fabian Pascal i "The final NULL in the coffin", samtidigt med du får en dyb indsigt i NULL verdenen.