Oracle sql null value is not selected

In Oracle, null is not considered a legal value to select unless you explicitly ask for it:

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

You could also use NVL (similar to coalesce):

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

Any comparison to NULL returns NULL, which is equivalent to FALSE. This is true eve of not-equals.

If you want to include NULL values, do one of the following:

where first <> '1' or first is null

or

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

Any comparison with null is false - = and <>, >, <, and so on. You cannot use null in an IN list as well - it would be ignored. Moreover, two nulls are not even equal to each other.

To get the nulls, you need to ask for them explicitly, like this:

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

That is correct because NULL can never be compared with anything else....

The only option that you have is to include a NULL check as an or in the command

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

According to Oracle Documentation NULL is defined as a value not knownm or when the value is not meaningful. That is solely the reason why Oracle mentions not consider a value of ZERO as NULL. This is just an FYI, an addon. Thanks!

Tags:

Sql

Oracle