MySQL функції CASE, IF, IFNULL, COALESCE


Функції CASE , IF NULL , IF NULL , COALESCE


CASE

Функція CASE перевіряє істинність набору умов і в залежності від результату перевірки може повертати той чи інший результат. Ця функція приймає наступну форму:

CASE
    WHEN умова_1 THEN результат_1
    WHEN умова_2 THEN результат_2
    .................................
    WHEN умова_N THEN умова_N
    [ELSE альтернативний_результат]
END

Візьмемо для прикладу таку таблицю Products:

CREATE TABLE Products
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(30) NOT NULL,
    Manufacturer VARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price DECIMAL NOT NULL
);

Виконаємо запит до цієї таблиці і використовуємо функцію CASE:

SELECT ProductName, ProductCount, 
CASE
    WHEN ProductCount = 1 
        THEN 'Товар закінчується'
    WHEN ProductCount = 2 
        THEN 'Мало товару'
    WHEN ProductCount = 3 
        THEN 'Є в наявності'
    ELSE 'Багато товару'
END AS Category
FROM Products;

функція IF

Функція IF в залежності від результату умовного виразу повертає одне з двох значень. Загальна форма функції виглядає наступним чином:

IF(умова, значення_1, значення_2)

Якщо умова, що передається в якості першого параметра, вірно, то повертається перше значення, інакше повертається друге значення. наприклад:

SELECT ProductName, Manufacturer,
    IF(ProductCount > 3, 'Багато товару', 'Мало товару')
FROM Products;

IFNULL

Функція IFNULL перевіряє значення деякого виразу. Якщо воно дорівнює NULL, то функція повертає значення, яке передається в якості другого параметра:

IFNULL(вираз, значення)

Наприклад, візьмемо таку таблицю

CREATE TABLE Clients
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20) NOT NULL,
    LastName VARCHAR(20) NOT NULL,
    Phone VARCHAR(20) NULL,
    Email VARCHAR(20) NULL
);
  
INSERT INTO Clients (FirstName, LastName, Phone, Email)
VALUES ('Tom', 'Smith', '+36436734', NULL),
('Bob', 'Simpson', NULL, NULL);

І застосуємо при отриманні даних функцію IFNULL:

SELECT FirstName, LastName,
        IFNULL(Phone, 'не визначено') AS Phone,
        IFNULL(Email, 'невідомо') AS Email
FROM Clients;

COALESCE

Функція COALESCE приймає список значень і повертає перше з них, яке не дорівнює NULL:

COALESCE(вираз_1, вираз_2, вираз_N)

Наприклад, виберемо з таблиці Clients користувачів і в контактах у них визначимо або телефон, або електронну адресу, якщо вони не рівні NULL:

SELECT FirstName, LastName,
        COALESCE(Phone, Email, 'не визначено') AS Contacts
FROM Clients;

Тобто в даному випадку повертається телефон, якщо він визначений. Якщо він не визначений, то повертається електронну адресу. Якщо і електронна адреса не визначено, то повертається рядок "не визначено".


Наш партнер:
beta test mp3 playlist downloader