IF表达式
  1. IF(expr1,expr2,expr3)

如果 expr1 是TRUE ,则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。if语句还可以相互嵌套,如下

  1. IF(IF(expr1,expr2,expr3),expr2,expr3)

可以多层嵌套使用,多个判断语句

题目

使用if解决:

SELECT 
    device_id, gender, 
    IF(age IS NULL , '其他',
      IF(age < 20, '20岁以下',
        IF(age BETWEEN 20 AND 24, '20-24岁', '25岁及以上'))) AS age_cut // 三层嵌套
FROM
    user_profile;
WHEN表达式
  1. 用法一
CASE 
    WHEN 条件判断 THEN 结果
    ......
    WHEN 条件判断 THEN 结果
    ELSE 其他结果
END 

ELSE就是java当中的default

上面那个图使用when解法

SELECT 
    device_id, gender, 
CASE 
    WHEN age < 20 THEN '20岁以下'
    WHEN age < 25 THEN '20-24岁'
    WHEN age >= 25 THEN '25岁及以上'
    ELSE '其他'
END 
AS age_cut
FROM
    user_profile;
  1. 方法二
CASE 列值
    WHEN1 THEN 结果1
    ......
    WHEN2 THEN 结果2
    ELSE 其他结果
END 

举例
把性别改成男/女

SELECT 
CASE gender
  WHEN 'male' THEN '男'
  WHEN 'female' THEN '女'
  ELSE '其他'
END AS gender
FROM 
user_profile;
if和when联合使用

when的第一种用法和if可以联合使用

WHEN 条件判断 THEN 结果 ,其中条件判断可以改为if

参考
MySQL if 语句用法
mysql中的when的用法_MySQL数据库之Mysql casewhen的三种用法

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐