При программировании приложений баз данных иногда бывает необходимыми изменять представление данных. Например, род (gender) человека может быть кодирован с использованием значений 1, 2 и 3 (для женщины, мужчины и ребенка соответственно). Такие программные техники позволяют сократить время на реализацию программы. Выражение case в языке Transact-SQL делает подобный тип кодирования простым в реализации.
Выражение case имеет две различные формы:
♦ простое выражение case;
♦ поисковое выражение case. Синтаксис простого выражения case:
case expression_l
[when expression_2 then result_l]...
[else result_n] end
Оператор Transact-SQL с простым выражением case отыскивает первое выражение в списке всех предложений where, которое соответствует выражению expression_i, и выполняет соответствующее предложение then. Если соответствие не найдено, то выполняется предложение else.
Синтаксис поискового выражения case:
case
[when condition_l then result_l] ... [else result_n]
end
Оператор Transact-SQL с поисковым выражением case отыскивает первое выражение, которое при вычислении дает истину. Если никакое условие when не дает истину, то возвращается значение выражения else. В примере 6.47 показано использование поискового выражения case.
В примере 6.47 бюджеты всех проектов взвешиваются, и отображаются все весовые коэффициенты (вместе с именами соответствующих проектов).
В примере 6.48 показан другой вариант с выражением case, где предложение when содержит внутренний запрос как часть выражения.