В таблице users поле phone бывает NULL и бывает пустой строкой. Какое утверждение верное?
AПустая строка и
NULL — одно и то же, их можно проверять только через phone IS NULLB
phone = '' найдёт и пустые строки, и NULLC
phone IS NULL найдёт только NULL, а phone = '' найдёт только пустые строкиD
phone IS NOT NULL вернёт только строки, где phone = ''Правильный ответ.
NULL и пустая строка — разные вещи: IS NULL проверяет только NULL, а = '' — только пустую строку.Разбор
NULL означает отсутствие/неизвестность значения, а пустая строка — это конкретное значение «строка длины 0». Условие phone IS NULL выберет только пропуски (NULL). Условие phone = '' выберет только пустые строки и не выберет NULL, потому что сравнение с NULL даёт UNKNOWN. Если нужно найти оба варианта, используют, например, phone IS NULL OR phone = ''.
Проверь себя · 1/3разбор после ответа
Есть выражение для маржи:
revenue - cost. Что получится, если revenue = 1000, а cost = NULL? И какой вариант устойчиво вернёт 1000 при пропуске cost?Ещё вопросы по теме «Выражения и 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» →