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.