нулевые значения не возвращаются, если не указано - Oracle SQL


0

При попытке выполнить оператор выбора, который просто исключает некоторые данные, также ошибочно (?) Исключаются нулевые значения.

Используя таблицу А:

ID         NAME
1          Foo
2          Bar
3          (null)

Следующее утверждение:

select * from a where NAME<>'Foo'

возвращает следующее:

ID         NAME
2          Bar

Почему ID 3 не возвращается в результате этого заявления? Чтобы включить запись с нулевым значением, я должен изменить свой оператор выбора на

select * from a where (NAME<>'Foo' or NAME is null)

Ответы:


1

Вот как работает SQL. (NULL <> 'Foo')возвращает NULL, что не может быть условным. Если вы хотите включить эту строку, вам нужно OR NAME IS NULLили вам нужно рассмотреть возможность хранения пустой строки вместо NULL, если это подходит для вашего варианта использования.

http://dba.fyicenter.com/faq/sql_server_2/What_Are_NULL_Values.html содержит дополнительную информацию о значениях NULL и логических операторах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.