В таблице заказов поле cancelled_at заполняется только для отменённых заказов, а для активных оно равно NULL. Какой фильтр выберет именно активные (не отменённые) заказы?

AФильтр WHERE cancelled_at IS NULL оставит активные строки без даты отмены
BФильтр WHERE cancelled_at = NULL отберёт строки, где значение поля совпадает с NULL
CФильтр WHERE cancelled_at <> NULL отберёт строки, где значение поля не равно NULL
DФильтр WHERE cancelled_at IS NOT NULL оставит отменённые строки с датой отмены
Правильный ответ. Чтобы отобрать строки с пропуском, используйте IS NULL, а не сравнение через = или <>.

Разбор

Условие cancelled_at IS NULL вернёт TRUE для строк, где поля даты отмены нет, то есть для активных заказов. Сравнения вида = NULL или <> NULL всегда возвращают UNKNOWN, а не TRUE, поэтому такие фильтры дают пустой результат. Фильтр IS NOT NULL, наоборот, оставит только отменённые строки.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Основы SQL-запросов»