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
  • 相关阅读:
    rsyslog日志服务器搭建
    使用原生js实现对table中的某个单元格进行编辑并提交后台修改数据
    使用vuex管理的状态数据在刷新页面后数据丢失的问题
    brew install mongodb
    brew安装与启动redis
    zsh设置代理
    DNS Rebinding漏洞原理
    防数据泄露_MySQL库和数据安全
    PHP代码审计_用==与===的区别
    MySQL提权 通过UDF
  • 原文地址:https://www.cnblogs.com/jijm123/p/10594672.html
Copyright © 2011-2022 走看看