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

SQL   2 апреля 2012  Автор статьи:  

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

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

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

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

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

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

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

SELECT
CASE
WHEN Name is NULL
THEN 'Неизвестный'
ELSE Name
END
FROM Student

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

COALESCE( A, B)

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

CASE
WHEN A is NULL
THEN B
ELSE A
END

Научиться программировать

  • на Delphi

  • на Java

  • на C++