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;