Функция MySQL IFNULL
В этой статье мы расскажем о функции MySQL IFNULL. Это удобная функция для обработки значений NULL.
Функция MySQL IFNULL - общие сведения
IFNULL является одной из функций потока управления MySQL, которая принимает два аргумента и возвращает первый, если он не равен NULL. Иначе она возвращает второй аргумент.
В качестве аргументов могут выступать конкретные значения или выражения. Ниже приведен синтаксис функции IFNULL:
IFNULL(выражение_1,выражение_2);
FNULL возвращает выражение_1, если выражение_1 не равно NULL; в противном случае возвращается выражение_2.
Если вы хотите вернуть значение, исходя из соответствия условию TRUE или FALSE, а не NULL, вам следует использовать функцию IF.
Примеры применения функции MySQL IFNULL
Посмотрите следующие примеры применения функции MySQL IFNULL:
SELECT IFNULL(1,0); -- возвращает 1
Посмотреть код
SELECT IFNULL('',1); -- возвращает ''
Посмотреть код
SELECT IFNULL(NULL,'IFNULL function'); -- возвращает IFNULL function
Посмотреть код
Как это работает:
- IFNULL (1,0) возвращает 1, потому что 1 не равно NULL;
- IFNULL ('', 1) возвращает '', потому что строка не является NULL;
- IFNULL (NULL, «IFNULL function») возвращает строку IFNULL function, потому что первый аргумент - NULL.
Рассмотрим практический пример использования функции MySQL IFNULL.
Сначала создайте новую таблицу под названием contacts, используя следующий запрос:
CREATE TABLE IF NOT EXISTS contacts (
contactid INT AUTO_INCREMENT PRIMARY KEY,
contactname VARCHAR(20) NOT NULL,
bizphone VARCHAR(15),
homephone VARCHAR(15)
);
Запись каждого контакта содержит имя, рабочий и домашний телефон. Затем вставьте данные в таблицу contacts:
INSERT INTO contacts(contactname,bizphone,homephone)
VALUES('John Doe','(541) 754-3009',NULL),
('Cindy Smith',NULL,'(541) 754-3110'),
('Sue Greenspan','(541) 754-3010','(541) 754-3011'),
('Lily Bush',NULL,'(541) 754-3111');
Для некоторых контактов указан только домашний или рабочий телефон. Чтобы получить все имена контактов и телефоны из таблицы, используем следующий запрос:
SELECT
contactName, bizphone, homephone
FROM
contacts;
Посмотреть код

Было бы неплохо, если бы мы могли получить домашний телефон контакта, если рабочий телефон недоступен. В этом нам поможет функция MySQL IFNULL. Она вернет домашний телефон, если рабочий телефон - NULL.
Используйте следующий запрос, чтобы получить имена и телефоны всех контактов:
SELECT
contactname, IFNULL(bizphone, homephone) phone
FROM
contacts;
Посмотреть код

Необходимо избегать использования функции в операторе WHERE, поскольку это уменьшает производительность запроса. И вам может показаться, что MySQL IFNULL не работает.
Если вы хотите проверить, является ли значение NULL или нет, можно использовать в операторе WHERE IS NULL или IS NOT NULL.
В этой статье мы познакомились с функцией MySQL IFNULL и узнали, как использовать ее в запросах.