Case-выражение

Выражение CASE позволяет определить результат на основе проверки одного или нескольких условий.

Выражение CASE может быть записано двумя способами.

Первый способ имеет следующий вид:

CASE WHEN условие_поиска1 THEN выражение1 [ WHEN условие_поиска2 THEN выражение2 …]

[ ELSE выражениеL ] END

Вычисление выражения CASE, представленного таким образом, начинается с вычисления условия_поиска1. Если в результате будет получено значение false (ложь), вычисляется условие_поиска2, и т.д. Как только для какого-либо условия_поискаK будет получено значение true (истина), вычисляется связанное с ним выражениеK, определяющее результат вычисления выражения CASE, и на этом вычисления прекращаются. Если все условия поиска дают в результате значение false, результатом выражения CASE будет результат вычисления выраженияL, если присутствует ELSE, или же NULL, если ELSE не указано.

Следует отметить, что если при вычислении какого-либо условия поиска получается неопределенное значение (из-за наличия NULL значений), такое значение не является истинным и интерпретируется как false.

Второй способ записи выражения CASE имеет следующий вид:

CASE выражение WHEN выражение1 THEN результирующее_выражение1 [ WHEN выражение2 THEN результирующее_выражение2 …][ ELSE результирующее_выражениеL ] END

При вычислении выражения CASE, заданного таким способом, результат вычисления выражения последовательно сравнивается с результатами вычисления выражения1, выражения2 и т.д. (в соответствии с этим, тип результата вычисления выражения должен быть сравнимым с типом результатов вычисления выражений, записанных после WHEN). Как только очередное сравнение окажется успешным (выражение = выражениеK), вычисляется соответствующее результирующее_выражениеK, определяющее результат вычисления выражения CASE, и вычисления заканчиваются. Если же значение выражения не совпадает ни с одним из результатов выражений, указанных после WHEN, тогда результатом вычисления выражения CASE является результат вычисления результирующего_выраженияL, если указано ELSE, или NULL, если ELSE отсутствует.

Для обеих форм записи выражения CASE должны выполняться следующие условия:

• после ключевых слов THEN и ELSE вместо выражения может быть указано ключевое слово NULL;

• по крайней мере, после хотя бы одного THEN не должно быть указано NULL;

• результаты всех выражений, записанных после THEN и ELSE, должны иметь совместимый тип данных.

Для обеих форм записи выражения CASE проверки, указанные в выражении, выполняются в порядке их записи.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: