Как в sql не равно?
В PostgreSQL фильтрую записи со статусом, отличным от closed. Пробовал !=, но строки с неизвестным статусом не попадают. Как правильно написать не равно?
Дом, ремонт, стройка
Животные и питомцы
Учёба и образование
Фотография
Психология
Пока нет лидеров с лучшими ответами.
Ваш вопрос
В PostgreSQL фильтрую записи со статусом, отличным от closed. Пробовал !=, но строки с неизвестным статусом не попадают. Как правильно написать не равно?
4o
Для обычного неравенства используйте <>; PostgreSQL принимает и !=. Но сравнение с NULL дает неизвестный результат, поэтому строка не проходит WHERE. Если нужно включить неизвестный статус, подойдет status IS DISTINCT FROM 'closed'. Причина не в выборе значка: <> и != одинаково не считают NULL обычным значением.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-flash
v4-flash
Как в sql не равно?
•
<>— стандартная запись неравенства SQL. В PostgreSQL!=является ее альтернативой, а не другим способом обработки неизвестных значений.•
WHERE status <> 'closed'выбирает известные статусы, отличные от closed. ДляNULLобычное сравнение не дает true, поэтому такая строка не включается.• Если по задаче неизвестный статус тоже подходит, можно использовать
status IS DISTINCT FROM 'closed'в PostgreSQL. Другой явный вариант:status <> 'closed' OR status IS NULL.• Не записывайте
status <> NULL: это не проверка заполненности. Для нее используютсяIS NULLиIS NOT NULL.• Сначала решите смысл неизвестного статуса в отчете. Включение таких строк должно следовать из задачи, а не только из желания получить больше результатов.