zoukankan      html  css  js  c++  java
  • SQL 条件判断

    简介:

    SQL中条件判断表达式有 case when then endif()ifnull()

    case有两种格式,即 简单case函数 和 case搜索函数。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。

    简单的case函数

    SELECT 姓名,
      (CASE 性别
        WHEN "男" THEN 1
        WHEN "女" THEN 0
        END
      )性别
    FROM 教师表;
    

    case选择函数

    SELECT 姓名,
      (CASE
        WHEN 性别 = "男" THEN 1
        WHEN 性别 = "女" THEN 0
        END
      )性别
    FROM 教师表;
    

    if函数

    if(expre1, expre2, expre3) 如果expre1为true (expre1 <> 0 and expre1 <> null),则返回expre2,否则返回expre3

    SELECT 姓名,
      IF(性别 = "男", 1, 0)性别
    FROM 教师表
    WHERE 性别 <> '';
    

    ifnull函数

    ifnull(expre1, expre2) 如果expre1为 null 就返回expre2,不为 null 就返回 expre1 (0和''不行,只能是null)

    SELECT IFNULL(NULL, 10);  #10
    
    SELECT IFNULL(0, 10);  #0
    
    SELECT IFNULL('', 10);  #10
    
    SELECT IFNULL(6/0, 'hello');  #'hello'
    

    小试牛刀

    根据教师的生日查询他们的生肖

    首先试试case函数

    #简单case函数
    SELECT 姓名, 生日,
      (CASE YEAR(生日) MOD 12
        WHEN 0 THEN "猴"
        WHEN 1 THEN "鸡"
        WHEN 2 THEN "狗"
        WHEN 3 THEN "猪"
        WHEN 4 THEN "鼠"
        WHEN 5 THEN "牛"
        WHEN 6 THEN "虎"
        WHEN 7 THEN "兔"
        WHEN 8 THEN "龙"
        WHEN 9 THEN "蛇"
        WHEN 10 THEN "马"
        WHEN 11 THEN "羊"
      END)生肖
    FROM 教师表;
    

    成功了!

    再试一试case搜索函数

    /* case搜索函数 */
    SELECT 姓名, 生日,
      (CASE
        WHEN YEAR(生日) MOD 12 = 0 THEN "猴"
        WHEN YEAR(生日) MOD 12 = 1 THEN "鸡"
        WHEN YEAR(生日) MOD 12 = 2 THEN "狗"
        WHEN YEAR(生日) MOD 12 = 3 THEN "猪"
        WHEN YEAR(生日) MOD 12 = 4 THEN "鼠"
        WHEN YEAR(生日) MOD 12 = 5 THEN "牛"
        WHEN YEAR(生日) MOD 12 = 6 THEN "虎"
        WHEN YEAR(生日) MOD 12 = 7 THEN "兔"
        WHEN YEAR(生日) MOD 12 = 8 THEN "龙"
        WHEN YEAR(生日) MOD 12 = 9 THEN "蛇"
        WHEN YEAR(生日) MOD 12 = 10 THEN "马"
        WHEN YEAR(生日) MOD 12 = 11 THEN "羊"
      END)生肖
    FROM 教师表;
    

    那在试试if函数

    -- if函数
    SELECT 姓名, 生日,
        IF(YEAR(生日) MOD 12 = 0, "猴",
          IF(YEAR(生日) MOD 12 = 1, "鸡",
            IF(YEAR(生日) MOD 12 = 2, "狗",
              IF(YEAR(生日) MOD 12 = 3, "猪",
                IF(YEAR(生日) MOD 12 = 4, "鼠",
                  IF(YEAR(生日) MOD 12 = 5, "牛",
                    IF(YEAR(生日) MOD 12 = 6, "虎",
                      IF(YEAR(生日) MOD 12 = 7, "兔",
                        IF(YEAR(生日) MOD 12 = 8, "龙",
                          IF(YEAR(生日) MOD 12 = 9, "蛇",
                            IF(YEAR(生日) MOD 12 = 10, "马", "羊"
        )))))))))))生肖
    FROM 教师表;
    
  • 相关阅读:
    [工作积累] shadow map问题汇总
    引擎设计跟踪(九.14.3.4) mile stone 2
    引擎设计跟踪(九.14.3.3) Deferred shading的一些小细节
    引擎设计跟踪(九.14.3.2) Deferred shading的后续实现和优化
    《口袋妖怪 太阳/月亮》正式公布 简体中文确认
    古墓丽影:崛起 PC版今日发售
    枪弹辩驳(弹丸论破)即将登陆PC
    引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
    引擎设计跟踪(九.14.3) deferred shading 准备
    引擎设计跟踪(九.14.2 final) Inverse Kinematics: CCD 在Blade中的实现
  • 原文地址:https://www.cnblogs.com/Liwker/p/13899822.html
Copyright © 2011-2022 走看看