Simple CASE vs. Searched CASE

转载自:http://www.oratable.com/simple-case-searched-case/

case-when-in-sql-simple-searched

The CASE construct in Oracle has two variants – the simple CASE and the searched CASE. We saw examples of both kinds in the topic The Difference Between DECODE and CASE.

Let’s have a closer look to compare them in structure and functionality.


Structural Differences

The simple CASE has the following structure:

1
2
3
4
5
case n
           when 1 then Action1
           when 2 then Action2
           else        ActionOther
         end case ;

The searched CASE has the following structure:

1
2
3
4
5
6
case
   when n = 1               then Action1;
   when n = 2               then Action2;
    when ( n > 2 and n < 6) then Action3through5;
   else                          ActionOther;
end case ;

Functional Differences

The simple CASE performs a simple equality check of "n" against each of the "when" options.

The searched CASE evaluates the conditions independently under each of the "when" options. With this structure, far more complex conditions can be implemented with a searched CASE than a simple CASE.

A searched CASE can combine multiple tests using several columns, comparisons and AND/OR operators.

Note that in both simple and searched CASE constructs, the conditions are evaluated sequentially from top to bottom, and execution exits after the first match is found. So, suppose more than one condition is true, only the first action is considered.

Example using the searched case:

1
2
3
4
5
6
7
case
   when empno in ( 'KING' , 'CLARK' ) and sal > 5000
               then process_highpaid(empno);
   when empno in ( 'CLARK' , 'SMITH' )
               then process_manager(empno);
   else    process_general(empno);
end case ;

In the above, though employee CLARK may match two conditions, only process_highpaid(empno) will be executed.

Historical Difference

Not that it matters but for the trivia buffs (and also if you’re working on an old version of Oracle) – the simple CASE expression was introduced in Oracle 9i. The searched CASE expression is the Oracle 8i variant.

Exercise for you:

In the examples under the topic The Difference Between DECODE and CASE, identify which use simple CASE and which use searched CASE.

For further reading:

Oracle documentation on CASE Expressions

Spon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值