Опубликован: 02.02.2007 | Доступ: свободный | Студентов: 2375 / 243 | Оценка: 4.10 / 3.86 | Длительность: 26:44:00
Урок 25:

Управление ходом выполнения

< Урок 24 || Урок 25: 1234567 || Урок 26 >

CASE

В большинстве языков программирования оператор CASE является расширенной формой оператора IF, которая позволяет вам определять множество булевых выражений в одном операторе. В SQL Server CASE является функцией, а не командой. Она используется не сама по себе, как IF. а как часть оператора SELECT или UPDATE.

Операторы, включающие в себя структуру CASE, могут использовать одну из двух синтаксических форм, в зависимости от того, будет ли изменяться оцениваемое выражение. Простейшая форма в предположении, что всегда будет оцениваться булево выражение, имеет следующий вид:

значение = выражение

Значение может быть сколь угодно сложным. Вы можете использовать константу, имя столбца, или составное выражение, если необходимо. В качестве оператора сравнения всегда используется равенство. Синтаксис простой структуры CASE представлен ниже:

CASE значение
 WHEN выражение_один THEN результирующее_выражение_один
 WHEN выражение_два THEN результирующее_выражение_два 
.
.
.
 WHEN выражение_n THEN результирующее_выражение_n 
 [ELSE альтернативное_результирующее_выражение]
END

В этой форме функции CASE, выражение результирующее_выражение возвращается, только в том случае, если выражение, следующее за ключевым словом WHEN, логически равно указанному значению. Вы можете использовать в выражение любое количество фраз WHEN. Фраза ELSE необязательна – она выполняется, только если все фразы WHEN оцениваются как FALSE.

Сравнение одного значения с некоторым количеством других значений является типичной задачей, но иногда вам требуется большая степень гибкости. В это случае вы можете воспользоваться так называемым поисковым синтаксисом функции CASE Transact-SQL, который имеет следующий вид:

CASE 
 WHEN булево_выражение_один THEN результирующее_выражение_один
WHEN булево_выражение_два THEN результирующее_выражение_два
.
.
.
WHEN булево_выражение_n THEN результирующее_выражение_n
[ELSE альтернативное_результирующее_выражение]
END

В этой форме CASE вы можете указать целое булево выражение в каждой фразе WHEN вместо неявного сравнения выражения в простой форме. Учтите, что при определении истинности можно оценивать несколько булевых_выражений. Transact-SQL возвратит только первое результирующее_выражение, а затем перейдет к оператору, следующему за END.

Используйте простую структуру CASE

  1. В окне Query (Запрос) выберите вкладку Editor (Редактор), а затем нажмите кнопку Clear Window (Очистить окно).Query Analyzer очистит окно.
  2. В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Load Script (Загрузить сценарий).Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла сценария).

  3. Выделите сценарий с именем SimpleCase и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий.

  4. В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий).Query Analyzer отобразит результат выполнения запроса.

< Урок 24 || Урок 25: 1234567 || Урок 26 >
Инна Грушецкая
Инна Грушецкая
Сергей Чесноков
Сергей Чесноков