Вираз, отримане при використанні простого формату функції CASE. Аргумент input_expression є будь-яке припустиме вираз.
Просте вираження, з яким порівнюється аргумент input_expression при використанні простого формату функції CASE. Аргумент when_expression є будь-яке припустиме вираз. Типи даних аргументу input_expression і кожного з виразів when_expression повинні бути однаковими або неявно приводяться друг до друга.
Вираз, що повертається, якщо порівняння виразів input_expression і when_expression дає в результаті TRUE або вираз Boolean_expression обчислюється в TRUE. Аргумент result expression є будь-яке припустиме вираз.
Цей вислів, що повертається, якщо жодна з операцій порівняння не дає в результаті TRUE. Якщо цей аргумент опущений і жодна з операцій порівняння не дає в результаті TRUE, функція CASE повертає NULL. Аргумент else_result_expression є будь-яке припустиме вираз. Типи даних аргументу else_result_expression і будь-якого з аргументів result_expression повинні бути однаковими або неявно приводяться друг до друга.
Це логічне вираз, отримане при використанні пошукового формату функції CASE. Аргумент Boolean_expression є будь-яке припустиме логічне вираз.
Повертає вираз з найвищим пріоритетом з набору виразів result_expressions і необов'язкового вираження else_result_expression. Додаткові відомості див. У розділі Пріоритет типів даних (Transact-SQL).
значення, що повертаються
Просте вираження CASE:
Просте вираження CASE порівнює перший вираз з виразом в кожному реченні WHEN. Якщо ці вирази еквівалентні, то повертається вираз у реченні THEN.
Допускається тільки перевірка рівності.
Обчислює вираз input_expression. потім в зазначеному порядку порівнює значення виразів input_expression і when_expression для кожної пропозиції WHEN.
Повертає вираз result_expression. відповідне першій пропозиції WHEN, для якого операція порівняння 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. відповідне першій пропозиції WHEN, для якого вираз Boolean_expression має значення TRUE.
Якщо ні один вислів Boolean_expression не вирахував в TRUE, компонент Database Engine повертає вираз else_result_expression. якщо вказано пропозиція ELSE, або значення NULL, якщо пропозиція ELSE не вказано.
SQL Server допускає застосування в виразах CASE не більше 10 рівнів вкладеності.
Вираз CASE можна використовувати для управління потоком виконання інструкцій Transact-SQL, блоків інструкцій, які визначаються користувачем функцій і процедур, що зберігаються. Список методів управління виконанням см. В розділі Мова управління потоком (Transact-SQL).
Інструкція CASE послідовно обчислює умови і зупиняється після того, як виявлено перше що виконується умова. У деяких випадках вираз обчислюється до того, як інструкція CASE отримає результати вираження в якості вхідних даних. При обчисленні таких виразів можливі помилки. Спочатку обчислюються агрегатні вираження, які використовуються в аргументах WHEN інструкції CASE, а потім виконується інструкція CASE. Наприклад, наступний запит при формуванні значення статистичного вираження MAX видасть помилку ділення на нуль. Вона виникає ще до обчислення виразу CASE.