1、基本概念
简单CASE表达式是指在给定的表达式上执行基于等式的比较,如果表达式等于某个值,则执行某个操作。即依据input_expression与when_expression的匹配结果跳转到相应的result_expression。
2、基本语法
CASE input_expression
WHEN when_expression THEN result_expression
[...n]
[ELSE else_result_expression]
END
说明:其中,input_expression表示需要比较的表达式,when_expression等表示需要比较的值,result_expression等表示各个值相等时的结果,else_result_expression表示当input_expression不等于任何值时的默认结果
Tip:CASE:简单CASE函数中支持子查询,但须注意input_expression与when_expression是可匹配的。 另外,如果没有取值为TRUE的input_expression = when_expression,则当指定ELSE子句时,DLI将返回else_result_expression;当没有指定ELSE子句时,返回NULL值。
3、示例
假设根据固定的工资定义职员级别,可按如下SQL执行:
SELECT name
,salary
,CASE salary
WHEN 15000 THEN '初级'
WHEN 20000 THEN '中级'
WHEN 25000 THEN '高级'
WHEN 30000 THEN '高级'
WHEN 35000 THEN '高级'
ELSE NULL
END AS level
FROM company
ORDER BY salary;
SQL语句解析:
测试使用的是在GaussDB数据库中创建的一张company表。
这段SQL是从“company”表中选择员工的名字(name)、薪水(salary)以及一个根据薪水等级分类的字段(level)。并使用“ORDER BY salary”语句将结果按照薪水从低到高的顺序进行排序。
简单CASE表达式的工作方式:
如果“salary”字段的值等于15000,那么“level”字段的值就是“初级”。
如果“salary”字段的值等于20000,那么“level”字段的值就是“中级”。
如果“salary”字段的值等于25000或30000或35000,那么“level”字段的值都是“高级”。
如果“salary”字段的值不等于以上任何值,那么“level”字段的值就是NULL。




