2013-02-21 12 views

risposta

11

Qualsiasi confronto con null è falso - = e <>, >, <, e così via. Non è possibile utilizzare null in un elenco IN: verrebbe ignorato. Inoltre, due null s sono non uguali tra loro.

per ottenere i valori nulli, è necessario chiedere esplicitamente, come questo:

SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1' 
9

Qualsiasi confronto con NULL restituisce NULL, che è equivalente a FALSE. Questa è la vera vigilia di non-uguali.

Se si desidera includere i valori NULL, effettuare una delle seguenti operazioni:

where first <> '1' or first is null 

o

where coalesce(first, '<null>') <> '1' 
4

In Oracle, null non è considerato un valore legale per selezionare a meno che non esplicitamente chiedere iT:

select * from name where (first != '1') or first is null 

si potrebbe anche usare NVL (simile a fondersi):

select * from name where nvl(first,'0') != '1' 
2

Questo è corretto perché NULL non può mai essere paragonato a qualsiasi altra cosa ....

L'unica opzione che avete è quella di includere un controllo NULL come o nel comando

SELECT * FROM NAME WHERE FIRST!=1 OR FIRST IS NULL 

Secondo Oracle documentazione NULL è definito come un valore non knownm o quando il valore non è significativo. Questa è solo la ragione per cui Oracle menziona non considerare un valore di ZERO come NULL. Questa è solo una FYI, un addon. Grazie!

Problemi correlati