CASE ОПЕРАТОР

В этом учебном пособии вы узнаете, как использовать оператор CASE в Oracle/PLSQL c синтаксисом и примерами.

Описание

В Oracle/PLSQL оператор CASE имеет функциональность IF-THEN-ELSE. Начиная с Oracle 9i, вы можете использовать оператор CASE в SQL предложении.

Синтаксис

Синтаксис оператора CASE в Oracle/PLSQL:

CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END

Параметры или аргументы

expression
Не является обязательным. Это значение, которое вы сравниваете с условиями (то есть: condition_1 ... condition_n).
condition_1 .. condition_n
должны быть одного типа. Условия оцениваются по порядку, одно за другим. После того, как условие примет значение TRUE (истина), оператор CASE вернет результат, и не будет оценивать условия дальше.
result_1 .. result_n
все должны быть одного типа данных. Это значение возвращается единожды, когда condition примет TRUE (истина).

Примечание

  • Если условие не примет TRUE, то оператор CASE вернет значение предложения ELSE.
  • Если предложение ELSE опущено и условие не примет TRUE, то оператор CASE вернет NULL.
  • Оператор CASE может иметь до 255 сравнений. Каждое предложение WHEN ... THEN рассматривает 2 сравнения.

Применение

Оператор CASE можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Пример

Вы можете использовать оператор CASE в SQL предложении следующим образом:

Или вы могли бы написать SQL запрос, используя оператор CASE следующим образом: (опустив expression в предложение WHEN .. THEN). Например:

Эти два примера оператора CASE эквивалентны следующему условному оператору IF-THEN-ELSE:

Оператор CASE будет сравнивать каждое значение owner, одно за другим.

Предложение ELSE в операторе CASE не является обязательным. Его можно опустить. Давайте посмотрим предыдущий SQL запрос с опущенным предложением ELSE.

SQL запрос будет выглядеть следующим образом:

С отсутствующим предложением ELSE, если ни одно из условий не приняло TRUE, оператор CASE вернет NULL.

Сравнивая 2 условия

Вот пример, который показывает, как использовать оператор CASE, чтобы сравнить различные условия:

Сравнение 2-х полей в одном предложении CASE:

Итак, если поле supplier_name = 'IBM' и поле supplier_type = 'Hardware', то оператор CASE вернет 'North office'. Если поле supplier_name = 'IBM' и supplier_type = 'Software', оператор CASE вернет 'South office'.