SQL中的case when then else end用法
学习的链接:https://blog.csdn.net/iteye_8567/article/details/82639402
功能
计算条件列表,并返回多个可能的结果表达式之一。可以在sql中对字段进行简单的处理。
CASE 简单表达式的工作方式如下:
将第一个表达式与每个 WHEN 子句中的表达式进行比较,以确定它们是否等效。 如果这些表达式等效,将返回 THEN 子句中的表达式。
仅用于等同性检查。
按指定的顺序计算每个 WHEN 子句的 input_expression = when_expression。
返回首个 input_expression = when_expression 的计算结果为 TRUE 的 result_expression。
如果 input_expression = when_expression 的计算结果均不为 TRUE,则在指定了 ELSE 子句的情况下, SQL Server 数据库引擎 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
————————————————
CASE 搜索表达式:
按指定顺序对每个 WHEN 子句的 Boolean_expression 进行计算。
返回首个 Boolean_expression 的计算结果为 TRUE 的 result_expression。
如果 Boolean_expression 的计算结果均不为 TRUE,则在指定了 ELSE 子句的情况下, 数据库引擎 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
————————————————
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END