Нужно выбрать заказы, где delivery_city не равно 'Moscow', но при этом включить строки, где delivery_city равен NULL (город неизвестен). Какой фильтр корректен?
A
WHERE delivery_city <> 'Moscow': обычное сравнение даёт UNKNOWN для строк с NULL в столбцеB
WHERE delivery_city <> 'Moscow' OR delivery_city IS NULL: явная проверка IS NULL добавит неизвестные значенияC
WHERE delivery_city = 'Moscow' OR delivery_city IS NULL: оставит только Москву и строки с неизвестным городомD
WHERE 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. Какое выражение корректнее?Ещё вопросы по теме «Выражения и NULL»
- Нужно выбрать пользователей без электронной почты. Какое условие в `WHERE` корректно найдёт строки, где `email` отсутствует?
- В таблице `orders` поле `promo_code` может быть `NULL`. Что произойдёт со строкой, где `promo_code = NULL`, при фильтре `WHERE promo_code <> 'NONE'`?
- В таблице `sessions` 5 строк. Значения `utm_source`: `'google'`, `NULL`, `'email'`, `NULL`, `NULL`. Чему равны `COUNT(*)` и `COUNT(utm_source)`?
- В таблице `payments` три строки со значениями `amount`: `NULL`, `NULL`, `NULL`. Что вернут запросы `SELECT SUM(amount)` и `SELECT SUM(COALESCE(amount, 0))`?
- Что вернёт выражение `COALESCE(NULL, NULL, 'web', 'app')`?
- Все вопросы по «Выражения и NULL» →