1.1 Список условных функций
В языке SQL есть список функций, которые чем-то похожи на оператор if-else и switch в Java.
Всего таких функций 4:
| Функции | Описание | |
|---|---|---|
| 1 | CASE | Аналог switch |
| 2 | IF() | Аналог тернарного оператора или if-else |
| 3 | IFNULL() | Аналог if-else |
| 4 | NULLIF() | Аналог if-else |
Три последних в SQL представлены в виде функций, а CASE – это полноценный оператор, поэтому мы рассмотрим его отдельно в самом конце.
1.2 Функция IF()
Функция IF() в SQL чем-то напоминает тернарный оператор в Java. В языке SQL она принимает 3 параметра и имеет вид:
IF (условие, истинное, ложное)
В функцию IF нужно передать три выражения:
- условие, которое проверяется на истинность;
- выражение, которое возвращается, когда условие истинно;
- выражение, которое возвращается, когда условие ложно.
Ниже я приведу несколько примеров, чтобы было легче понять, как это работает:
| Запрос | Результат | |
|---|---|---|
| 1 | SELECT IF(1>2, 2, 3) | 3 |
| 2 | SELECT IF(1<2, 'yes', 'no') | 'yes' |
| 3 | SELECT IF(STRCMP('test','test1'), 'no', 'yes') | 'no' |
1.3 Функция IFNULL() и NULLIF()
Также есть две модификации функции IF().
Первая модификация – это функция IFNULL(). Она принимает только два значения:
IFNULL (выражение1, выражение2)
Если выражение1 не равно NULL, тогда функция вернет выражение1. Если же выражение1 IS NULL, то функция вернет выражение2. Суть – подстановка значения по умолчанию, когда поле равно NULL.
Вторая модификация функции IF – это функция NULLIF(), она тоже принимает два значения:
NULLIF (выражение1, выражение2)
Она работает в противоположном направлении:
- если выражение1 равно выражение2, то функция возвращает
NULL; - если выражения не равны, то возвращает выражение1.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ