Вы ищете клиентов без телефона, пишете
WHERE phone = NULL и получаете ноль строк, хотя значения NULL в столбце есть. Ошибки нет: запрос выполнился, но условие не стало истинным ни для одной строки.В SQL
NULL означает неизвестное значение. Сравнение через = поэтому даёт не истину или ложь, а третий результат: «неизвестно». WHERE оставляет только строки, для которых условие истинно, и отбрасывает остальные. Даже NULL = NULL не даёт истину.Для поиска отсутствующих значений используйте
IS NULL, для обратной проверки — IS NOT NULL. Разбор с таблицей и пошаговым объяснением показывает, почему обычное сравнение здесь отвечает не на тот вопрос.Попробуйте оба условия на таблице из трёх строк: одно вернёт пустой результат, второе найдёт строку без телефона.
