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 лекция
Недоступна
task0201
С помощью запроса к базе данных сравнить числа с помощью функции IF и знака > и вернуть 1, если первое число больше второго и 0 в обратном случае.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0202
С помощью запроса к базе данных сравнить числа с помощью функции IF и знака <= и вернуть 1, если первое число меньше либо равно второму и 0 в обратном случае.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0203
С помощью запроса к базе данных сравнить числа с помощью функции IF и знака < и вернуть 'yes', если первое число строго меньше второго и 'no' в обратном случае.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0204
С помощью запроса к базе данных сравнить числа с помощью функции IF и знака >= и вернуть 'yes', если первое число больше либо равно второму и 'no' в обратном случае.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0205
Известно, что первые 4 сотрудника (согласно id) - это руководство компании и стоит задача проверить, кто получает больше 1000, а кто нет. Нужно выбрать id и 'yes' (если salary строго больше 1000) или 'no' (если salary меньше 1000) из таблицы employee, у кого значение поля id строго м
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0206
У компании появились лишние деньги и решили премировать 10 сотрудников, у которых зарплата менее 500. Нужно выбрать всю информацию о сотруднике и размер его премии: - 1000, если salary меньше или равна 500 - 0, если salary больше 500 из таблицы employee, для тех, у кого значение поля id строго больш
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0207
Напиши запрос, который с помощью IFNULL проверяет null на null и возращает 1.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0208
Напиши запрос, который с помощью IFNULL проверяет null на null и возращает 'yes'.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0209
Напиши запрос, который с помощью NULLIF сравнивает два разных числа и возращает результат.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0210
Напиши запрос, который с помощью NULLIF сравнивает два одинаковых числа и возращает результат.
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0211
Напиши запрос, который согласно значения поля age в таблице customers возвращает следующий текст: - 'child', если возраст меньше либо равен 12 - 'adult', если возраст больше либо равен 20 - 'teenager', если возраст больше 12 и меньше 20. Ограничь выборку 5 записями. Используй
1
Задача
Модуль 4. Работа с БД, 2 уровень, 0 лекция
Недоступна
task0212
Напиши запрос, который согласно данных из таблицы employee для города (city) 'London' вернет такую информацию: - 'good', если должность (position) 'manager' и зарплата (salary) больше 10000 - 'good', если должность (position) НЕ 'manager' и зарплата (salary) б
Комментарии (41)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Денис Уровень 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
zaiats1311 Уровень 43
9 мая 2024
Для тех кому нужен норм эмулятор для отработки практики: https://sql-academy.org/ru/sandbox
hidden #3343731 Уровень 28
9 апреля 2024
А где вы задачи решаете на SQL?
Ольга Уровень 72 Expert
2 мая 2024
После лекции их кучка. Может это только для студентов?
hidden #3343731 Уровень 28
4 мая 2024
Думаю задачи доступны когда ты дойдешь до уровня по подписке, пройдя все уровни. А если не проходишь то доступны только лекции.
zaiats1311 Уровень 43
9 мая 2024
https://sql-academy.org/ru/sandbox
Жасаров Рысбек Уровень 114 Expert
22 декабря 2023
лайк если поставил nullif(5,5) на task0210