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 教师表;
原文地址:https://www.cnblogs.com/Liwker/p/13899822.html