Как поведёт себя фильтр WHERE country IN ('RU', 'KZ') для строки, где country = NULL?
AСтрока попадёт в результат, потому что
NULL не мешает INBСтрока попадёт в результат, если в списке есть хотя бы 2 значения
CSQL выдаст ошибку из-за
NULLDСтрока не попадёт в результат, потому что условие не станет
TRUEПравильный ответ. При
country = NULL выражение country IN (...) даёт не TRUE, поэтому строка не проходит WHERE.Разбор
IN — это набор сравнений на равенство. Если country = NULL, то сравнение с каждым элементом ('RU', 'KZ') даёт UNKNOWN. В итоге всё выражение не становится TRUE, и строка не проходит фильтр WHERE. Если нужно включать NULL, добавляют OR country IS NULL.
Проверь себя · 1/3разбор после ответа
В таблице
payments три строки со значениями amount: NULL, NULL, NULL. Что вернут запросы SELECT SUM(amount) и SELECT SUM(COALESCE(amount, 0))?Ещё вопросы по теме «Выражения и NULL»
- Нужно выбрать пользователей без email. Какое условие в `WHERE` корректно найдёт строки, где `email` отсутствует (равен `NULL`)?
- В таблице `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» →