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

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

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 ответ1

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .