SQL Урок 9. Оператор Case

Для удобства вывода информации в языке sql нам сейчас не хватает аналога if. Он позволит нам строить разветвленную логику вывода запроса, что очень важно в некоторых запросах. Например при отображении записей в таблице не хочется, чтобы пользователь видел где — то NULL, поэтому для того, чтобы это избежать применяют оператор CASE. Он позволит выводить разные данные в зависимости от значения поля.
Синтаксис CASE:

1
2
3
4
CASE выражение
WHEN значение_1
THEN значение_2
END

В данном примере мы сравниваем значение_1 с результатом выражение и если результат данного сравнения истина(true), то CASE возвращает значение_2. Таких пар значений можно сделать можно сделать сколько угодно штук. Так же можно задать значение, если не выполниться ни одно из условий:
Синтаксис CASE:

1
2
3
4
5
CASE выражение
WHEN значение_1
THEN значение_2
[ELSE] значение_3
END

Таким образом если результат сравнения выражения с значением_1 равен false (ложь), то CASE вернет значение_3. В случае отсутствия ELSE, оператор вернет NULL.
Также существует другая форма записи оператора CASE, которая позволяет сравнивать не одно выражение с несколькими значениями, а прям задавать условия для каждого случая.

1
2
3
4
5
CASE
WHEN условие_1
THEN значение_1
[ELSE] значение_2
END

Данный вид записи оператора CASE также поддерживает несколько пар «WHEN — THEN», что позволяет создавать сложные запросы.
Допустим в нашей таблице все поля кроме ID (ключа) являются необязательными, тогда для того, чтобы не возвращать пользователю NULL можно применить следующий sql запрос:

1
2
3
4
5
6
7
SELECT
CASE
WHEN Name IS NULL
THEN 'Неизвестный'
ELSE Name
END
FROM Student

Конечно для написания таких запросов в SQL придуман более короткий оператор COALESCE:

1
COALESCE( A, B)

Эквивалентен:

1
2
3
4
5
CASE
WHEN A IS NULL
THEN B
ELSE A
END

Категория: MySQL | Добавил: ghost_mod (29.09.2016)
Просмотров: 408 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: