• ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句


    5.1 CASE语句

    1. CASE语句具有如下结构

    CASE SELECTOR

      WHEN EXPRESSION 1 THEN STATEMENT 1;

      WHEN EXPRESSSION 2 THEN STATEMENT 2;

      ........

      WHEN EXPRESSION N THEN STATEMENT N;

      ELSE STATEMENT N+1;

     END CASE;

    保留字CASE标识CASE语句的开始。选择器决定哪个WHEN子句应该被执行。每个WHEN子句都包含一个EXPRESSION以及与之关联的一个或者多个可执行语句。ELSE子句是可选的。他的工作方式非常类似于IF-THEN-ELSE语句中所使用的ELSE子句。END CASE是标识CASE语句结束的保留字。注意,选择器只会计算一次。并且会顺序计算WHEN的子句。表达式的值与选择器的值进行比较。如果两种值相等。那么与特定WHEN子句相关的语句会执行,并且随后的WHEN的子句不会计算。如果任何表达式都不匹配选择器的值,则ELSE子句会被选中和执行。

    2. 搜索式CASE语句

    搜索式CASE语句有个能够产生boolean(true,false,null)的搜索条件,当特定搜索条件计算结果为TRUE时,会执行与该条件相关的语句组合。搜索式CASE语句的语法如下所示:

    CASE

      WHEN SEARCH CONDIDTION 1 THEN STATEMENT 1;

      WHEN SEARCH CONDIDTION2 THEN STATEMENT 2;

      ........

      WHEN SEARCH CONDIDTIONN THEN STATEMENT N;

      ELSE STATEMENT N+1;

     END CASE;

    当搜索条件的计算结果为TRUE时,执行控制权传递与之相关的语句。如果任何搜索条件都不会产生TRUE,则会执行与ELSE子句相关的语句。请注意,ELSE子句是可选的。

    3. CASE语句和搜索式CASE语句之间的差别

    搜索式的CASE语句没有选择器(可以这么说,因为它产生的是BOOLEN类型的搜索条件,那我们就给他一个函数表达式例如MOD(V_NUM,2)=0判断是TRUE FALSE OR NULL,而CASE语句需要把选择器传入,解释:(V_MUM_FLAG := MOD(V_NUM,2),所以你要在CASE 后面添加V_MUM_FLAG这个选择器 然后判断选择器0(when 0 THEN)

    CASE语句

    CASE V_MUM_FLAG

      WHEN 0 THEN

        STATEMEN

    搜索式CASE语句

    CASE

      WHEN MOD(V_NUM,2)=0 THEN

      STATEMEN.

    5.2 CASE表达式

    CASE表达式会返回一个值,这个值会接着被赋予一个变量。是使用复制操作符:=实现的

    5.3 NULLIF和COALESCE函数

    1. NULLIF函数

    NULLIF函数会比较两个表达式。如果两者相同,函数会返回NULL,否则的话,返回第一个表达式的值。

    NULLIF结构:

    NULLIF(expression1, expression2)

    如果expression1 等于 expression2,则NULLIF返回NULL.如果expression1 不等于 expresson2,NULLIF函数返回expression1.注意 NULLIF函数的作用与NVL函数相反。NVL如果第一个表达式是NULL,NVL函数返回第二个表达式。如果第一个表达式不是NULL.NVL返回第一个表达式

    NULLIF函数等价于如下CASE表达式

    CASE

      WHEN EXPRESSION1 = EXPRESSION2 THEN NULL

      ELSE EXPRESSION1

    END

    NULLIF函数存在一个限制:不能把字面值NULL赋予EXPRESSION1,

    2. COALESCE[,kəʊə'les]函数

    COALESCE的函数会把表达式列表中每一个表达式与NULL比较,并且返回第一个非NULL表达式的值。COALESCE函数具有如下结构

    COALESCE(expression1,expression2,.........,expressionN)

    如果expression1等于NULL,会计算expressioin2.如果expression2的计算结果部位NULL,这个函数会返回expression2,如果所有表达式的结果都是NULL,则这个函数返回NULL.

    5.3.1 NULLIF函数

  • 相关阅读:
    Qt -- 鼠标移入移出事件 enterEvent、leaveEvent
    QT -- QPainter介绍
    Qt -- 浅析QFontMetrics 获取字体宽度,高度
    函数声明后面的const用法
    QT -- 读取file数据/写数据到file
    QT -- QLineEdit按下回车键获取信息
    C++ -- fgets,fputs,fputc,fgetc总结
    QT -- QString / std::string转换为const char*
    C++ -- fopen函数用法
    HTML DOM树
  • 原文地址:https://www.cnblogs.com/Kubility123/p/5690278.html
Copyright © 2020-2023  润新知