В таблице NAME столбец FIRST имеет значение null, но строки не выбраны. Пожалуйста, помогите мне понять.Oracle sql null value не выбрано
SELECT * FROM NAME WHERE FIRST != '1'
В таблице NAME столбец FIRST имеет значение null, но строки не выбраны. Пожалуйста, помогите мне понять.Oracle sql null value не выбрано
SELECT * FROM NAME WHERE FIRST != '1'
Любое сравнение с null
ложна - =
и <>
, >
, <
, и так далее. Вы не можете использовать null
в списке IN
- он будет проигнорирован. Более того, два null
s равны , а не, даже равные друг другу.
Чтобы получить аннулирует, вам нужно задать для них в явном виде, как это:
SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1'
Любое сравнение с NULL возвращает NULL, что эквивалентно FALSE. Это истинное предзнаменование не равных.
Если вы хотите включить NULL значения, выполните одно из следующих действий:
where first <> '1' or first is null
или
where coalesce(first, '<null>') <> '1'
В Oracle, нуль не считается юридическое значение для выбора, если вы явно не просите это:
select * from name where (first != '1') or first is null
Вы также можете использовать NVL (аналог слипаются):
select * from name where nvl(first,'0') != '1'
Это правильно, потому что NULL не может сравниться ни с чем ....
Единственный вариант что у вас есть, чтобы включить проверку NULL в качестве или в команде
SELECT * FROM NAME WHERE FIRST!=1 OR FIRST IS NULL
Согласно Oracle Documentation NULL определяется как значение не knownm или когда значение не осмысленный. Это единственная причина, по которой Oracle не рассматривает значение ZERO как NULL. Это просто FYI, аддон. Благодаря!