для чего используется оператор case
Pascal: Занятие №2. Часть 2: Оператор выбора в паскале
Оператор выбора в Паскале
Рассмотрим использование оператора выбора в языке Паскаль на конкретном примере.
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от отметки.
Результат выполнения с использованием условного оператора if:
var otmetka:integer; begin writeln(‘Отметка?’); readln(otmetka); if (otmetka=1) or (otmetka=2) then writeln (‘кошмар!’) else if otmetka=3 then writeln(‘плохо’) else if otmetka=4 then writeln(‘неплохо’) else if otmetka=5 then writeln(‘отлично!’) else writeln(‘таких отметок не бывает’); end.
Данный пример демонстрирует нерациональную работу программиста и слишком запутанный код. Гораздо лаконичнее выглядит код при использовании оператора выбора.
Результат выполнения с использованием оператора выбора case:
var otmetka:integer; begin writeln(‘отметка?’); readln(otmetka); case otmetka of 1,2 : writeln (‘кошмар!’); 3: writeln(‘плохо’); 4: writeln(‘неплохо’); 5: writeln(‘отлично!’); else writeln(‘таких отметок не бывает’); end end.
Блок-схема, соответствующая оператору выбора:
[Название файла: L2task9.pas ]
Перечисление или диапазон
[Название файла: L2task10.pas ]
Детально разобраться в том, как работает оператор выбора Case в Паскале, можно просмотрев видеоурок:
Символьный тип char в Паскале
Для решения следующей задачи пригодится тип char — символьный.
Переменная данного типа объявляется так:
c: char;
и присваивает значения следующим образом:
c:=’a’;
Выражение CASE (Transact-SQL)
Оценка списка условий и возвращение одного из нескольких возможных выражений результатов.
Выражение CASE имеет два формата:
простое выражение CASE для определения результата сравнивает выражение с набором простых выражений;
поисковое выражение CASE для определения результата вычисляет набор логических выражений.
Оба формата поддерживают дополнительный аргумент ELSE.
Выражение CASE может использоваться в любой инструкции или предложении, которые допускают допустимые выражения. Например, выражение CASE можно использовать в таких инструкциях, как SELECT, UPDATE, DELETE и SET, а также в таких предложениях, как select_list, IN, WHERE, ORDER BY и HAVING.

Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
input_expression
Выражение, полученное при использовании простого формата функции CASE. input_expression — это любое допустимое выражение.
WHEN when_expression
Простое выражение, с которым сравнивается input_expression при использовании простого формата CASE. when_expression — это любое допустимое выражение. Типы данных аргумента input_expression и каждого из выражений when_expression должны быть одинаковыми или неявно приводимыми друг к другу.
THEN result_expression
Выражение, возвращаемое, когда равенство input_expression и when_expression имеет значение TRUE или Boolean_expression имеет значение TRUE. result expression — это любое допустимое выражение.
ELSE else_result_expression
Это выражение, возвращаемое, если ни одна из операций сравнения не дает в результате TRUE. Если этот аргумент опущен и ни одна из операций сравнения не дает в результате TRUE, функция CASE возвращает NULL. else_result_expression — это любое допустимое выражение. Типы данных аргумента else_result_expression и каждого из выражений result_expression должны быть одинаковыми или неявно приводимыми друг к другу.
WHEN Boolean_expression
Логическое выражение, полученное при использовании поискового формата функции CASE. Boolean_expression — это любое допустимое логическое выражение.
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Типы возвращаемых данных
Возвращает тип с наивысшим приоритетом из набора типов в выражении result_expressions и необязательном выражении else_result_expression. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).
Возвращаемые значения
Простое выражение CASE
Простое выражение CASE сравнивает первое выражение с выражением в каждом предложении WHEN. Если эти выражения эквивалентны, то возвращается выражение в предложении THEN.
Допускается только проверка равенства.
В указанном порядке сравнивает значения выражений input_expression и when_expression для каждого предложения WHEN.
Возвращает выражение result_expression, соответствующее первой операции input_expression = when_expression, равной TRUE.
Если ни одна из операций input_expression = when_expression не дает значения TRUE, Компонент SQL Server Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.
Поисковое выражение CASE
Вычисляет в указанном порядке выражения Boolean_expression для каждого предложения WHEN.
Возвращает выражение result_expression, соответствующее первому выражению Boolean_expression, которое имеет значение TRUE.
Если ни одно выражение Boolean_expression не равно TRUE, Компонент Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.
Remarks
SQL Server допускает применение в выражениях CASE не более 10 уровней вложенности.
Выражение CASE нельзя использовать для управления потоком выполнения инструкций Transact-SQL, блоков инструкций, определяемых пользователем функций и хранимых процедур. Список методов управления потоком см. в статье Язык управления потоком (Transact-SQL).
Выражение CASE последовательно оценивает свои условия и останавливается, когда находит первое выполнимое условие. В некоторых ситуациях выражение оценивается до того, как выражение CASE получает результаты выражения в качестве входных данных. При оценке этих выражений возможны ошибки. Агрегатные выражения в аргументах WHEN выражения CASE вначале оцениваются, после чего передаются выражению CASE. Например в следующем запросе создается ошибка деления на ноль при вычислении значения агрегата MAX. Это происходит до оценки выражения CASE.
Следует создавать зависимости только от порядка оценки условий WHEN для скалярных выражений (в том числе нескоррелированных вложенных запросов, возвращающих скалярные значения), а не для агрегатных выражений.
Примеры
A. Использование инструкции SELECT с простым выражением CASE
При использовании в инструкции SELECT простое выражение CASE позволяет выполнить только проверку на равенство. Другие проверки не выполняются. В следующем примере выражение CASE используется для изменения способа отображения категорий линейки продуктов с целью сделать их более понятными.
Б. Использование инструкции SELECT с поисковым выражением CASE
При использовании в инструкции SELECT поисковое выражение CASE позволяет заменять значения в результирующем наборе в зависимости от результатов сравнения. В следующем примере отображается список цен в виде текстового комментария, основанного на диапазоне цен для продукта.
В. Использование выражения CASE в предложении ORDER BY
Г. Использование выражения CASE в инструкции UPDATE
В следующем примере выражение CASE используется в инструкции UPDATE, чтобы определить значение, установленное в столбце VacationHours для сотрудников, у которых столбец SalariedFlag имеет значение 0. Если при вычитании 10 часов из VacationHours получается отрицательное значение, VacationHours увеличивается на 40 часов. В противном случае значение VacationHours увеличивается на 20 часов. С помощью предложения OUTPUT отображаются исходная и обновленная продолжительности отпуска.
Д. Использование выражения CASE в инструкции SET
Е. Использование выражения CASE в предложении HAVING
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
Ж. Использование инструкции SELECT с выражением CASE
При использовании в инструкции SELECT выражение CASE позволяет заменять значения в результирующем наборе в зависимости от результатов сравнения. В приведенном ниже примере выражение CASE используется для изменения способа отображения категорий линейки продуктов с целью сделать их более понятными. Если значение отсутствует, выводится текст «Not for sale».
З. Использование выражения CASE в инструкции UPDATE
В следующем примере выражение CASE используется в инструкции UPDATE, чтобы определить значение, установленное в столбце VacationHours для сотрудников, у которых столбец SalariedFlag имеет значение 0. Если при вычитании 10 часов из VacationHours получается отрицательное значение, VacationHours увеличивается на 40 часов. В противном случае значение VacationHours увеличивается на 20 часов.
Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть третья
Предыдущие части
О чем будет рассказано в этой части
Выражение CASE – условный оператор языка SQL
Данный оператор позволяет осуществить проверку условий и возвратить в зависимости от выполнения того или иного условия тот или иной результат.
Оператор CASE имеет 2 формы:
| Первая форма: | Вторая форма: |
|---|---|
| CASE WHEN условие_1 THEN возвращаемое_значение_1 … WHEN условие_N THEN возвращаемое_значение_N [ELSE возвращаемое_значение] END | CASE проверяемое_значение WHEN сравниваемое_значение_1 THEN возвращаемое_значение_1 … WHEN сравниваемое_значение_N THEN возвращаемое_значение_N [ELSE возвращаемое_значение] END |
В качестве значений здесь могут выступать и выражения.
Разберем на примере первую форму CASE:





