1. Список умовних функцій

У мові SQL є список функцій, які чимось схожі на оператор if-else та switch у Java.

Загалом таких функцій 4:

Функції Опис
1 CASE Аналог switch
2 IF() Аналог тернарного оператора або if-else
3 IFNULL() Аналог if-else
4 NULLIF() Аналог if-else

Три останні в SQL представлені у вигляді функцій, а CASE — це повноцінний оператор, тому ми розглянемо його окремо наприкінці.

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'

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.