SQLServer之Case用法

定义

计算条件列表,并返回多个可能的结果表达式之一。数据库

表达式类型

case具备两种格式:express

  • 简单case表达式,它经过将表达式与一组简单的表达式进行比较来肯定结果。
  • case搜索表达式,它经过计算一组布尔表达式来肯定结果。

这两种方式,都支持可选的 else参数,大部分状况下是能够实现相同的功能。
case可用于容许使用有效表达式的任意语句或子句, 例如,能够在 select、update、delete和 set等语句以及 select_list、in、where、order by和 having等子句中使用 Case。函数

语法

简单case表达式

select spa

case input_expressionip

when when_expression then result_expressioninput

when when_expression then result_expressionit

......io

else else_result_expressionend table

from class

databasename.dbo.tablename

示例

clipboard.png

case搜索表达式

select

case

when boolean_expression then result_expression

when boolean_expression then result_expression

......

else else_result_expressionend end

from

databasename.dbo.tablename

示例

clipboard.png

语法解析

input_expression
使用简单 case格式时计算的表达式。 input_expression 是任何有效的表达式 。

when when_expression
使用简单 case格式时要与 input_expression 进行比较的简单表达式 。 when_expression 是任何有效的表达式 。input_expression 及每一个 when_expression 的数据类型必须相同或必须是隐式转换的数据类型 。

then result_expression
当 input_expression = when_expression 的计算结果为 true时,或 boolean_expression 的计算结果为 true时返回的表达式 。 result expression 是任何有效的表达式 。

else else_result_expression
比较运算计算结果不为 true 时返回的表达式。 若是忽略此参数且比较运算计算结果不为 true,则 case返回 null。 else_result_expression 是任何有效的表达式 。 else_result_expression 及任何 result_expression 的数据类型必须相同或必须是隐式转换的数据类型 。

when boolean_expression
使用 case 搜索格式时所计算的布尔表达式。 boolean_expression 是任何有效的布尔表达式 。

返回类型

从 result_expressions 和可选 else_result_expression 的类型集中返回优先级最高的类型 。

返回值

case 简单表达式:

case 简单表达式的工做方式以下:将第一个表达式与每一个 when 子句中的表达式进行比较,以肯定它们是否等效。 若是这些表达式等效,将返回 then 子句中的表达式。

  • 仅用于等同性检查。
  • 按指定的顺序计算每一个 when 子句的 input_expression = when_expression。
  • 返回首个 input_expression = when_expression 的计算结果为 true 的
    result_expression 。
  • 若是 input_expression = when_expression 的计算结果均不为 true,则在指定了 else
    子句的状况下,SQLServer数据库引擎将返回 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搜索函数的优势在于适用于全部比较(包括多值比较)的状况。

相关文章
相关标签/搜索