Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Как правильно фильтровать строки по условию, когда часть значений может быть NULL?

Вопрос проверяет понимание работы с NULL-значениями в SQL при фильтрации строк по условию.

Короткий ответ

NULL в SQL означает отсутствие значения, а не пустую строку или ноль. При фильтрации строк с возможными NULL-значениями нельзя использовать обычные операторы сравнения (=, <, >), так как они возвращают UNKNOWN для NULL. Вместо этого нужно применять операторы IS NULL или IS NOT NULL, а также функции вроде COALESCE для замены NULL на значение по умолчанию.

Длинный ответ

Проблема NULL в SQL

NULL в SQL обозначает отсутствие значения, а не пустое значение или ноль. Это важное отличие: NULL не участвует в обычных сравнениях. Любое сравнение с NULL (например, column = NULL) возвращает не TRUE или FALSE, а UNKNOWN. Поэтому WHERE-условие, содержащее такое сравнение, не включит строки с NULL в результат.

Как правильно фильтровать

Для проверки на NULL используются специальные операторы:

  • IS NULL — возвращает TRUE, если значение равно NULL.
  • IS NOT NULL — возвращает TRUE, если значение не равно NULL.

Если нужно обработать NULL как конкретное значение, применяется функция COALESCE, которая возвращает первое ненулевое значение из списка.

Примеры кода

Рассмотрим таблицу employees с полем salary, где некоторые записи могут иметь NULL (например, для стажёров).

-- Неправильно: не вернёт строки с NULL salary
SELECT * FROM employees WHERE salary < 50000;

-- Правильно: учитываем NULL
SELECT * FROM employees WHERE salary < 50000 OR salary IS NULL;

-- Использование COALESCE для замены NULL
SELECT name, COALESCE(salary, 0) AS effective_salary
FROM employees
WHERE COALESCE(salary, 0) < 50000;

Вывод

При фильтрации строк с возможными NULL-значениями всегда используйте IS NULL/IS NOT NULL или COALESCE, чтобы избежать неявного исключения строк из результата. Это особенно важно в отчётах и аналитике, где пропуск данных может исказить выводы.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • SQL

Ключевые слова

#SQL

#NULL

#WHERE

#IS NULL

#filtering

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.