Функция MySQL IFNULL

В этой статье мы расскажем о функции MySQL IFNULL. Это удобная функция для обработки значений NULL.

Общие сведения

IFNULL является одной из функций потока управления MySQL, которая принимает два аргумента и возвращает первый, если он не равен NULL. Иначе она возвращает второй аргумент.

В качестве аргументов могут выступать конкретные значения или выражения. Ниже приведен синтаксис функции IFNULL:

IFNULL(выражение_1,выражение_2);

FNULL возвращает выражение_1, если выражение_1 не равно NULL; в противном случае возвращается выражение_2.

Если вы хотите вернуть значение, исходя из соответствия условию TRUE или FALSE, а не NULL, вам следует использовать функцию IF.

Примеры применения функции

Посмотрите следующие примеры применения функции 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-function-example

Было бы неплохо, если бы мы могли получить домашний телефон контакта, если рабочий телефон недоступен. В этом нам поможет функция IFNULL. Она вернет домашний телефон, если рабочий телефон - NULL.

Используйте следующий запрос, чтобы получить имена и телефоны всех контактов:

SELECT 
    contactname, IFNULL(bizphone, homephone) phone
FROM
    contacts;

Посмотреть код

MySQL-IFNULL-result

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

Если вы хотите проверить, является ли значение NULL или нет, можно использовать в операторе WHERE IS NULL или IS NOT NULL.

В этой статье мы познакомились с функцией MySQL IFNULL и узнали, как использовать ее в запросах.

Перевод статьи «MySQL IFNULL» дружной командой проекта Сайтостроение от А до Я.

11 мая 2017 в 11:40
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок