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.