zoukankan      html  css  js  c++  java
  • SQL之CASE WHEN用法详解[1]

    简单CASE WHEN函数:

    CASE SCORE WHEN 'A' THEN '' ELSE '不及格' END
    CASE SCORE WHEN 'B' THEN '' ELSE '不及格' END
    CASE SCORE WHEN 'C' THEN '' ELSE '不及格' END

     等同于,使用CASE WHEN条件表达式函数实现:

    CASE WHEN SCORE = 'A' THEN ''
         WHEN SCORE = 'B' THEN ''
         WHEN SCORE = 'C' THEN '' ELSE '不及格' END

     THEN后边的值与ELSE后边的值类型应一致,否则会报错。如下:

    CASE SCORE WHEN 'A' THEN '' ELSE 0 END

    '优'和0数据类型不一致则报错: 

    [Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER

    简单CASE WHEN函数只能应对一些简单的业务场景,而CASE WHEN条件表达式的写法则更加灵活。

    CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。

    CASE WHEN condition THEN result
     
    [WHEN...THEN...]
     
    ELSE result
     
    END

    condition是一个返回布尔类型的表达式,如果表达式返回true,则整个函数返回相应result的值,如果表达式皆为false,则返回ElSE后result的值,如果省略了ELSE子句,则返回NULL。

    下面介绍几种常用场景。

    场景1:有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀

    SELECT
        STUDENT_NAME,
        (CASE WHEN score < 60 THEN '不及格'
            WHEN score >= 60 AND score < 80 THEN '及格'
            WHEN score >= 80 THEN '优秀'
            ELSE '异常' END) AS REMARK
    FROM
        TABLE

     注意:如果你想判断score是否null的情况,WHEN score = null THEN '缺席考试',这是一种错误的写法,正确的写法应为:

    CASE WHEN score IS NULL THEN '缺席考试' ELSE '正常' END
  • 相关阅读:
    ASP.NET---创建自定义Web控件小结
    ASP.NET---使用Asp.NET开发三层架构的应用程序
    poj 1847 最短路简单题,dijkstra
    HDU 1102 最小生成树裸题,kruskal,prim
    poj 2239 二分图最大匹配,基础题(待补)
    HDU 1520 树形dp裸题
    HDU 2089 简单数位dp
    poj 3254 状压dp入门题
    HDU 1710 二叉树遍历,输入前、中序求后序
    Poj 3250 单调栈
  • 原文地址:https://www.cnblogs.com/jijm123/p/10594672.html
Copyright © 2011-2022 走看看