Nella tabella NAME la colonna FIRST sta avendo null ma nessuna riga è selezionata. Per favore aiutami a capire.Il valore null di SQL sql non è selezionato
SELECT * FROM NAME WHERE FIRST != '1'
Nella tabella NAME la colonna FIRST sta avendo null ma nessuna riga è selezionata. Per favore aiutami a capire.Il valore null di SQL sql non è selezionato
SELECT * FROM NAME WHERE FIRST != '1'
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'
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'
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'
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!