• 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 教师表;
    
  • 相关阅读:
    Python高级数据处理与可视化(四)---- 数据存储
    Python高级数据处理与可视化(三)---- Matplotlib图像属性控制 & Pandas作图
    Notepad++
    HDU2819 Swap(二分匹配+输出结果)
    HDU1281 棋盘游戏(二分匹配+找必要的点)
    HDU1083 Courses(二分匹配)
    HDU2444 二分图判断+最大匹配
    HDU1045 Fire Net(二分匹配)
    exam1802 Bounty Hunter II(DAG的最小路径覆盖)
    SDUSTOJ 1801 LIS2(最长上升子序列不同值的数量)
  • 原文地址:https://www.cnblogs.com/Liwker/p/13899822.html
Copyright © 2020-2023  润新知