Вираз case (transact-sql)

Вираз, отримане при використанні простого формату функції 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.

Схожі статті