ITPub博客

首页 > 数据库 > Oracle > oracle之case语句 苏格拉没有

oracle之case语句 苏格拉没有

Oracle 作者:superpc1888 时间:2013-12-05 09:48:37 0 删除 编辑

一直以来用case语句都是糊里糊涂的,最近有时间查了下资料,现整理如下。

case语句存在两种形式:case和搜索式case。

二者最主要的区别是:case语句可以设定选择器,由选择器决定需要执行哪组动作;

                                   而搜索式case语句没有选择器,搜索条件按顺序执行,从而决定执行哪组动作。

结构:case语句的结构如下:

                       case selector

                           when expression 1 then statement 1;

                           when expression 2 then statement 2;

                           ......

                           when expression N then statement N;

                           else statement N+1;

                       end case;

           搜索式case语句的结构如下:

                      case

                           when expression 1 then statement 1;

                           when expression 2 then statement 2;

                           ......

                           when expression N then statement N;

                           else statement N+1;

                       end case;

 工作流程:case语句的工作流程如下:

                      1.计算选择器;

                      2.将表达式1与选择器比较,匹配则返回statement 1,结束case语句,否则进行下一步;

                      3.将表达式2与选择器比较,匹配则返回statement 2,结束case语句,否则进行下一步;

                      4.以次类推,直到将表达式N与选择器进行比较,匹配则返回statement N,否回statement  N+1 ,

                         结束case语句。

                  搜索式case语句的工作流程如下:

                       1.判断条件1的计算结果是否为真,为真则返回statement 1,结束case语句,否则进行下一步;

                       2.判断条件1的计算结果是否为真,为真则返回statement 2,结束case语句,否则进行下一步;

                       3.以此类推,直到判断条件N的计算结果是否为真,为真则返回statement N,否则返回            

                          statement  N+1 ,结束case语句。

示例:

case语句示例:select case to_char(sysdate,'yyyymm')
                                      when  '201001' then
                                        '一月'
                                      when  '201002' then
                                       '二月'
                                      when  '201003' then
                                       '三月'
                                      else '四到十二月之间'
                                  end case 
                        from dual;

搜索式case语句:select case
                                         when  to_char(sysdate,'yyyymm') = '201001' then
                                             '一月'
                                         when  to_char(sysdate,'yyyymm') = '201002' then
                                             '二月'
                                         when  to_char(sysdate,'yyyymm') = '201003' then
                                             '三月'
                                         else '四到十二月之间'
                                    end case
                            from dual;

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23054240/viewspace-1115162/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-12-20