Нужно выбрать заказы, где delivery_city не равно 'Moscow', но при этом включить строки, где delivery_city равен NULL (город неизвестен). Какой фильтр корректен?

AWHERE delivery_city <> 'Moscow': обычное сравнение даёт UNKNOWN для строк с NULL в столбце
BWHERE delivery_city <> 'Moscow' OR delivery_city IS NULL: явная проверка IS NULL добавит неизвестные значения
CWHERE delivery_city = 'Moscow' OR delivery_city IS NULL: оставит только Москву и строки с неизвестным городом
DWHERE delivery_city != NULL: попытка сравнить со значением NULL через оператор неравенства
Правильный ответ. Чтобы включить строки со значением NULL, его нужно проверить явно через IS NULL.

Разбор

Выражение delivery_city <> 'Moscow' не вернёт TRUE для строк с delivery_city = NULL (получится UNKNOWN), поэтому такие строки будут исключены. Если по смыслу нужно включить неизвестный город, добавляют явную проверку: delivery_city IS NULL. Итоговый устойчивый фильтр: WHERE delivery_city <> 'Moscow' OR delivery_city IS NULL.

Проверь себя · 1/3разбор после ответа
Нужно посчитать выручку как price * quantity, где quantity может быть NULL (поле не заполнили). По бизнес-правилу пропуск нужно трактовать как 1. Какое выражение корректнее?
Тренировать SQL в Telegram

Ещё вопросы по теме «Выражения и NULL»