In SQL, NULL significa "valore sconosciuto". Pertanto, ogni confronto con NULL restituisce NULL (sconosciuto) piuttosto che TRUE o FALSE.
Da un punto di vista concettuale, questa logica a tre valori ha senso. Da un punto di vista pratico, ogni studente di SQL ha, una volta o l'altra, reso l'errore classico WHERE myField = NULL
o ha imparato a fondo che NOT IN
non fa ciò che ci si aspetterebbe quando sono presenti valori NULL.
È mia impressione (correggimi se sbaglio) che i casi in cui questa logica a tre valori aiuta (ad esempio WHERE myField IS NOT NULL AND myField <> 2
può essere abbreviata in WHERE myField <> 2
) sono rari e, in quei casi, le persone tendono a usa comunque la versione più lunga per chiarezza, proprio come se aggiungessi un commento quando usi un trucco intelligente e non ovvio.
C'è qualche ovvio vantaggio che mi manca? O c'è un consenso generale tra la comunità di sviluppo sul fatto che sia stato un errore?