В таблице users поле phone бывает NULL и бывает пустой строкой. Какое утверждение верное?

AПустая строка и NULL — одно и то же, их можно проверять только через phone IS NULL
Bphone = '' найдёт и пустые строки, и NULL
Cphone IS NULL найдёт только NULL, а phone = '' найдёт только пустые строки
Dphone 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?
Тренировать SQL в Telegram

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