CASE
Функция CASE проверяет истинность набора условий и в зависимости от результата проверки может возвращать тот или иной результат. Эта функция принимает следующую форму:
| 1 2 3 4 5 6 7 | CASEWHEN условие_1 THEN результат_1WHEN условие_2 THEN результат_2.................................WHEN условие_N THEN условие_N[ELSE альтернативный_результат]END |
Возьмем для примера следующую таблицу Products:
| 1 2 3 4 5 6 7 8 | 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:
| 1 2 3 4 5 6 7 8 9 10 11 | SELECT ProductName, ProductCount, CASEWHEN ProductCount = 1 THEN 'Товар заканчивается'WHEN ProductCount = 2 THEN 'Мало товара'WHEN ProductCount = 3 THEN 'Есть в наличии'ELSE 'Много товара'END AS CategoryFROM Products; |

Функция IF
Функция IF в зависимости от результата условного выражения возвращает одно из двух значений. Общая форма функции выглядит следующим образом:
| 1 | IF(условие, значение_1, значение_2) |
Если условие, передаваемое в качестве первого параметра, верно, то возвращается первое значение, иначе возвращается второе значение. Например:
| 1 2 3 | SELECT ProductName, Manufacturer,IF(ProductCount > 3, 'Много товара', 'Мало товара')FROM Products; |

IFNULL
Функция IFNULL проверяет значение некоторого выражения. Если оно равно NULL, то функция возвращает значение, которое передается в качестве второго параметра:
| 1 | IFNULL(выражение, значение) |
Например, возьмем следующую таблицу
| 1 2 3 4 5 6 7 8 9 10 11 12 | 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:
| 1 2 3 4 | SELECT FirstName, LastName,IFNULL(Phone, 'не определено') AS Phone,IFNULL(Email, 'неизвестно') AS EmailFROM Clients; |

COALESCE
Функция COALESCE принимает список значений и возвращает первое из них, которое не равно NULL:
| 1 | COALESCE(выражение_1, выражение_2, выражение_N) |
Например, выберем из таблицы Clients пользователей и в контактах у них определим либо телефон, либо электронный адрес, если они не равны NULL:
| 1 2 3 | SELECT FirstName, LastName,COALESCE(Phone, Email, 'не определено') AS ContactsFROM Clients; |
То есть в данном случае возвращается телефон, если он определен. Если он не определен, то возвращается электронный адрес. Если и электронный адрес не определен, то возвращается строка “не определено”.