CASE (Entity SQL)

求出一组 Boolean 表达式的值以确定结果。

语法

CASE
     WHEN Boolean_expression THEN result_expression
    [ ...n ]
     [
    ELSE else_result_expression
     ]
END

参数

n 是一个占位符,表明可以使用多个 WHEN Boolean_expression THEN result_expression 子句。

Boolean_expression 计算结果为 true 时,返回 THEN result_expression 表达式。 result expression 是任何有效的表达式。

比较运算的结果都不为 true 时,返回 ELSE else_result_expression 表达式。 如果忽略此参数且比较运算计算的结果不为 true,CASE 将返回空值。 else_result_expression 是任何有效的表达式。 else_result_expression 及任何 result_expression 的数据类型必须相同或必须是隐式转换的数据类型。

WHEN Boolean_expression 是使用 CASE 搜索格式时计算的 Boolean 表达式。 Boolean_expression 是任何有效的 Boolean 表达式。

返回值

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

备注

实体 SQL CASE 表达式类似于 Transact-SQL CASE 表达式。 可以使用 case 表达式进行一系列条件测试,以确定哪个表达式将产生正确的结果。 这种格式的 case 表达式应用于由一个或多个 Boolean 表达式组成的一组表达式,以确定正确的结果表达式。

CASE 函数以指定的顺序为每个 WHEN 子句计算 Boolean_expression 的值,然后返回首个满足 result_expression = Boolean_expressiontrue。 而不对剩下的表达式求值。 如果没有任何 Boolean_expression 的计算结果为 true,则当指定了 ELSE 子句时,数据库引擎将返回 else_result_expression ;如果未指定 ELSE 子句,则返回空值。

CASE 语句不会返回 multiset 类型。

示例

以下 Entity SQL 查询使用 CASE 表达式计算一组 Boolean 表达式以确定结果。 此查询基于 AdventureWorks 销售模型。 若要编译并运行此查询,请执行下列步骤:

  1. 执行如何:执行返回 PrimitiveType 结果的查询中的过程。

  2. 将以下查询作为参数传递给 ExecutePrimitiveTypeQuery 方法:

CASE WHEN AVG({@score1,@score2,@score3}) < @total THEN TRUE ELSE FALSE END

请参阅