JavaRush /Курсы /Модуль 4. Работа с БД /Условные функции

Условные функции

Модуль 4. Работа с БД
2 уровень , 0 лекция
Открыта

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.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
Функция IF, кто больше
Функция IF, кто больше
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
Меньше или равно?
Меньше или равно?
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
Строго меньше
Строго меньше
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
Либо больше, либо равно
Либо больше, либо равно
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
Руководству нужно платить больше
Руководству нужно платить больше
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
10 счастливчиков
10 счастливчиков
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
IFNULL
IFNULL
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
IFNULL с текстом
IFNULL с текстом
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
NULLIF
NULLIF
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
NULLIF и одинаковые числа
NULLIF и одинаковые числа
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
IF в IF'е
IF в IF'е
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
3 IF`a
3 IF`a
Комментарии (42)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Кирилл Уровень 87
22 мая 2026
по братски, можно условия писать более корректно, мы учимся, а не работаем с тупыми PM
Денис Уровень 68
14 ноября 2025
Все задачи решил сходу, кроме task0212.
10 мая 2025
/* Комментарий не удален */
Bahodir Daminov Уровень 90
14 апреля 2025
task 0201 reshili 698 studentov, a vot task 0212 620 studentov. Mne interesno kuda 78 studentov propali. ne prodoljili izuchat ili prosta zabili?
JavaRusher853 Уровень 36
3 января 2025
Блин, чем дальше я учю этот язык, тем чаще у меня возникают мысли директоров американской фирмы в самой первой лекции по SQL "Это что за бред?", "И на это ушёл весь бюджет", "Кто это вообще придумал?", "Где деньги Лебовский". Буду откровенен, этот язык УЖАСЕН, он какой-то очень странный и отталкивающий, эти непонятные комманды IFNULL, NULLIF. Проще assembler или batch выучить чем этот эмейзинг, но что поделаешь, почти все фирмы требуют знания этого языка, так что идем до конца.
СтудентJava Уровень 109
12 января 2025
Видимо не всем заходит SQL. Мне норм. Хотя я с ним в первые сталкиваюсь. Задачи конечно нудноватые)
Олег Уровень 106 Expert
16 сентября 2024
Ну уже жёстче
Владимир Уровень 79 Expert
7 сентября 2024
В PostgreSQL оператор IF() не поддерживается. Вместо этого используется конструкция CASE.
Алексей Уровень 72 Expert
17 июля 2024
Anonymous #2798867 Уровень 43
9 мая 2024
Для тех кому нужен норм эмулятор для отработки практики: https://sql-academy.org/ru/sandbox
hidden #3343731 Уровень 28
9 апреля 2024
А где вы задачи решаете на SQL?
Ольга Уровень 72 Expert
2 мая 2024
После лекции их кучка. Может это только для студентов?
hidden #3343731 Уровень 28
4 мая 2024
Думаю задачи доступны когда ты дойдешь до уровня по подписке, пройдя все уровни. А если не проходишь то доступны только лекции.
Anonymous #2798867 Уровень 43
9 мая 2024
https://sql-academy.org/ru/sandbox