March 10, 2022

Условные конструкции в SQL

Рассмотрим использование условных выражений в SQL. Для примера будем использовать следующую таблицу:

case выражение

Case делает выбор на основании множества условий:

CASE

WHEN условие_1 THEN результат_1

WHEN условие_2 THEN результат_2

.................................

WHEN условие_N THEN результат_N

[ELSE альтернативный_результат]

END

Например, с его помощью можно скорректировать имена для лиц с фамилиями 'Davolio' и 'Fuller' (выводятся в новой колонке NewFirstName):

SELECT LastName, FirstName, case when LastName='Davolio' then 'Jenny' 
when LastName='Fuller' then 'Henry' else FirstName end as NewFirstName
FROM Employees;

if выражение

if в зависимости от условия возвращает один из результатов:

IF(условие, результат_1, результат_2)

Например, сформируем дополнительную колонку категории возраста в зависимости от даты рождения до или после "1960-01-01":

SELECT FirstName, LastName, BirthDate, 
		if (BirthDate < Date("1960-01-01"), 'older', 'younger') as category
FROM Employees

Работа с null

ISNULL - проверяет является ли аргумент пустым.

IFNULL - возвращает первый аргумент, если он не null, в противном случае - второй аргумент.

COALESCE - выдает первое не null значение из списка.

Примеры:

SELECT ISNULL("string"), ISNULL('')
SELECT IFNULL(NULL, "второй аргумент")
SELECT COALESCE(NULL, NULL, "третий аргумент", "четвертый аргумент");