Lo del NULL es un despropósito histórico bien documentado. Codd postulaba un valor 'desconocido' que actuara como marcador de posición sin comparación directa, pero SQL lo trató como un valor más, generando esa esquizofrenia de tres valores lógicos. Lo peor es que, para colmo, las funciones de agregado ignoran NULLs, pero COUNT(*) no. Si realmente hubieran implementado la lógica trivalente de forma consistente, hoy no tendríamos que usar IS NULL ni COALESCE. Y lo del error en SQL-86 habría sido un caos, pero al menos habría obligado a pensar en un NULL como lo que es: un agujero negro semántico, no un valor.