SQL Server функция CASE

В этом учебном пособии вы узнаете, как использовать оператор CASE в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

В SQL Server (Transact-SQL) оператор CASE имеет функциональные возможности оператора IF-THEN-ELSE. Вы можете использовать оператор CASE в SQL-предложении.

Синтаксис

Синтаксис оператора CASE в SQL Server (Transact-SQL):

CASE expression

WHEN value_1 THEN result_1
WHEN value_2 THEN result_2
...
WHEN value_n THEN result_n

ELSE result

END

ИЛИ

CASE

WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n

ELSE result

END

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

expression - выражение, которое будет сравниваться с каждым из предоставленных значений. (то есть: value_1, value_2, ... value_n).
value_1, value_2, ... value_n - значения, которые будут сравниваться. Значения сравниваются в указанном порядке. Когда value соответствует expression, оператор CASE выполнит указанные команды и не будет дальше сравнивать value.
condition_1, condition_2, ... condition_n - условия, которые будут сравниваться. Условия сравниваются в указанном порядке. Как только условие окажется истинным, оператор CASE вернет результат и не будет сравнивать условия дальше. Все условия должны быть одного и того же типа.
result_1, result_2, ... result_n – возвращаемые значение после того, как условие установлено как true. Все значения должны быть одного типа данных.

Примечание

  • Если value/condition не определено как TRUE, оператор CASE вернет значение в операторе ELSE.
  • Если ELSE опущено, и ни одно условие не является истинным, то оператор CASE вернет NULL.
  • Условия сравниваются в указанном порядке. Как только условие окажется истинным, оператор CASE вернет результат и не будет сравнивать условия дальше.
  • Вы не можете использовать оператор CASE для управления потоком программы, вместо этого используйте циклы и условные операторы.

Применение

Оператор CASE может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Пример

Рассмотрим некоторые примеры SQL Server оператора CASE, чтобы понять, как использовать оператор CASE в SQL Server (Transact-SQL). Например:

Или вы можете написать SQL-предложение с помощью оператора CASE следующим образом: (исключая выражение)

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

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

ИЛИ

Если опущено ELSE, и если условие не было определено как true, оператор CASE возвращает NULL.

Сравнение двух условий

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

Просто помните, что условия сравниваются в указанном порядке. Как только условие окажется истинным, оператор CASE вернет результат и не будет сравнивать условия дальше. Поэтому будьте осторожны при выборе порядка, в котором перечислены ваши условия.