Вопрос №23
Осталось:

Что такое NULL и как с ним работать в SQL?

Образцовый ответ

Показывать ответ по умолчанию

NULL — это специальное значение в SQL, обозначающее отсутствие данных или неизвестное значение.

Особенности NULL:

  • NULL не эквивалентно пустой строке или нулю.
  • Арифметика, сравнения и большинство функций с NULL возвращают NULL: 5 + NULL — это NULL.
  • Сравнение NULL = NULL тоже возвращает NULL, а не true: неизвестно, равны ли два неизвестных значения. Поэтому WHERE поле = NULL не находит ни одной строки — для проверки нужен IS NULL.
  • Логические операторы — исключение: NULL OR true возвращает true, а NULL AND false — false.

Работа с NULL

Для проверки на NULL используется оператор IS NULL или IS NOT NULL.

MySQL 8.4
-- Поиск записей с неизвестной датой рождения
SELECT * FROM employees WHERE birth_date IS NULL;

-- Поиск записей с известной датой рождения
SELECT * FROM employees WHERE birth_date IS NOT NULL;

Функции для работы с NULL

  • COALESCE

    Возвращает первый элемент списка, не равный NULL

    MySQL 8.4
    COALESCE(val1[, val2, ...., val_n])
    
  • ISNULL

    Возвращает 1 или 0 в зависимости от того, равно ли выражение NULL

    MySQL 8.4
    ISNULL(value)
    
  • IFNULL

    Возвращает значение, переданное 1-ым аргументом, если оно не равно NULL. В противном случае возвращает значение, переданное вторым аргументом.

    MySQL 8.4
    IFNULL(value, alternative_value)
    

Подробный разбор темы с примерами — в статье «COALESCE в SQL: замена NULL и связка с NULLIF».