Oracle
 sql >> Database >  >> RDS >> Oracle

SQL non visualizza valori null su una query non uguale?

In diverse lingue NULL viene gestito in modo diverso:la maggior parte delle persone conosce la logica a due valori dove true e false sono gli unici valori comparabili nelle espressioni booleane (even is false è definito come 0 e true come qualsiasi altra cosa).

In Standard SQL devi pensare alla logica a tre valori. NULL non è considerato un valore reale, potresti piuttosto chiamarlo "sconosciuto". Quindi se il valore è sconosciuto non è chiaro se nel tuo caso state è 0, 1 o qualsiasi altra cosa. Quindi NULL != 1 risultati su NULL di nuovo.

Ciò conclude che ogni volta che filtri qualcosa che potrebbe essere NULL, devi trattare i valori NULL da solo. Nota che anche la sintassi è diversa:i valori NULL possono essere confrontati solo con x IS NULL invece di x = NULL . Vedi Wikipedia per una tabella di verità che mostra i risultati delle operazioni logiche.