Skip to content

CASE WHEN表达式

概述

CASE WHEN表达式在SQL中用于实现条件逻辑。它可以用于在查询中根据不同的条件返回不同的值。CASE WHEN表达式有两种形式:简单形式和搜索形式。

简单形式

将表达式expr的值与val_expr进行比较,若相等,则返回与WHEN相对应的THEN后面的值,若都不匹配且语句中含ELSE子句,则返回ELSEe后的值,若都不匹配且语句中不含ELSE子句,则返回空值。

语法格式

sql
CASE expr
    WHEN val_expr1
    THEN result_expr1
    WHEN val_expr2
    THEN result_expr2
    ...
    ELSE result_exprN
END

示例

sql
SELECT name,
  CASE dept_no
    WHEN 1
    THEN '财务部'
    WHEN 2
    THEN '技术部'
    WHEN 3
    THEN '销售部'
    ELSE '其它部门'
  END
FROM emp;

搜索形式

本语句CASE后不带表达式,各个WHEN后面不是值表达式而是布尔表达式,本语句将依次判断各个WHEN后的布尔表达式,若其值为真,则返回THEN后的值,都不匹配时,若语句含ELSE子句,则返回ELSE后面的值,否则返回空值。

语法格式

sql
CASE
    WHEN bool_expr1
    THEN result_expr1
    WHEN bool_expr2
    THEN result_expr2
    ...
    ELSE result_exprN
END

示例

sql
SELECT name,
  CASE
    WHEN sal < 1000
    THEN '低收入水平'
    WHEN sal > 1000
    AND sal  < 5000
    THEN '中等收入'
    ELSE '高收入'
  END
FROM emp_salary;