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

(0)

相关推荐