V praxi platí, že operace porovnání čehokoli s NULL nevrací "false" ale NULL, a operace 1 + NULL nevrací 1 ale NULL. Z jakého důvodu je to vlastně takto definováno? U matematické operace si lze asi představit, proč nechat výpočet spadnout do NULL, ale například u porovnání 1 = NULL fakt nechápu, proč nevrátit hodnotu "false".
Já v tom nevidím žádný problém - libovolná operace vůči NULLu je NULL - nevidím žádný důvod, proč by toto pravidlo mělo mít výjimky (i když je samozřejmě má). Určitou logiku to dostane, až když člověk začne řešit predikáty IN, NOT IN.
NULL je relativně kontroverzní vlastnost SQL - teoreticky není potřeba (dost možná je to reakce na COBOL) a existují teoretické relační dotazovací jazyky bez NULL. Nicméně praktický smysl tam je - je to jedna hodnota, která je pro všechny typy mimo obor hodnot. Takže odpadá nutnost si definovat magické konstanty: "", -1, 0, 0000-00-00, ...
Z hlediska CPU, pokud budu mluvit o Postgresu, tak pro tabulky s vyššíma desítkama sloupců už může být test na NULL znát - tabulky, kde nejsou NULL hodnoty se načítají o fous rychleji (ale pozná se to třeba až u nějakého 70 - 80 sloupce). Ušetří se na uložišti - NULL je uložen jako 1bit bez ohledu na datový typ. Např. prázdný řetězec má minimálně 1byte, 0 v int má 4 bajty, ..
Jinak existuje několik funkcí a operátorů, které jsou vůči NULL imunní .. pro vás asi nejzajímavější by mohly být operátory IS DISTINCT FROM nebo IS NOT DISTINCT FROM, což je <> a = které zvládne NULL - v detailu
https://stackoverflow.com/questions/27134368/is-is-distinct-from-a-real-mysql-operator