打印      打开 PDF 版本的联机帮助


上一主题

下一主题

Case 语句

Case 语句是创建条件表达式的构建块,条件表达式对不同的列值可以产生不同的结果。

Case (Switch)

这种形式的 Case 语句也称为 CASE (Lookup) 形式。 检查 expression1 的值,然后是 WHEN 表达式。 如果 expression1 符合任何 WHEN 表达式,则它分配对应的 THEN 表达式中的值。

如果 expression1 符合多个 WHEN 子句中的表达式,则只分配第一个匹配后的表达式。

如果不符合任何 WHEN 表达式,则它分配 ELSE 表达式中指定的值。 如果未指定 ELSE 表达式,则它分配值 NULL。

另请参考 Case (If) 语句。

语法:

CASE expression1

WHEN expression THEN expression

{WHEN expression... THEN expression...}

ELSE expression

END

其中:

CASE

开始 CASE 语句。 后面必须跟一个表达式、一个或多个 WHEN 和 THEN 语句、可选的 ELSE 语句,以及 END 关键字。

WHEN

指定要满足的条件。

THEN

指定满足对应的 WHEN 表达式时要分配的值。

ELSE

指定在不满足任何一个 WHEN 条件的情况下要分配的值。如果忽略,则会假定 ELSE NULL。

END

结束 CASE 语句。

示例

CASE Score-par

WHEN -5 THEN 'Birdie on Par 6'

WHEN -4 THEN 'Must be Tiger'

WHEN -3 THEN 'Three under par'

WHEN -2 THEN 'Two under par'

WHEN -1 THEN 'Birdie'

WHEN 0 THEN 'Par'

WHEN 1 THEN 'Bogey'

WHEN 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

在上面的示例中,WHEN 语句必须反映严格相等,WHEN 条件

WHEN < 0 THEN 'Under Par'

是非法的,这是因为不允许使用比较运算符。

Case (If)

这种形式的 Case 语句计算每个 WHEN 条件,如果满足,就将分配对应的 THEN 表达式中的值。

如果不满足任何 WHEN 条件,它将分配 ELSE 表达式中指定的默认值。 如果未指定 ELSE 表达式,则它分配值 NULL。

另请参考 Case (Switch) 语句。

语法:

CASE

WHEN request_condition1 THEN expression1

{WHEN request_condition2 THEN expression2}

{WHEN request_condition... THEN expression...}

ELSE expression

END

其中:

CASE

开始 CASE 语句。后面必须跟随一个或多个 WHEN 和 THEN 语句、(可选)ELSE 语句以及 END 关键字。

WHEN

指定要满足的条件。

THEN

表示在满足对应 WHEN 表达式的情况下要分配的值。

ELSE

指定不满足任何一个 WHEN 条件的情况下要分配的值。如果忽略,则会假定 ELSE NULL。

END

结束 CASE 语句。

示例

CASE

WHEN score-par < 0 THEN 'Under Par'

WHEN score-par = 0 THEN 'Par'

WHEN score-par = 1 THEN 'Bogie'

WHEN score-par = 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

与 CASE 语句中的 Switch 形式不同,If 形式中的 WHEN 语句允许存在比较运算符;

WHEN < 0 THEN 'Under Par'

此 WHEN 条件合法。


已发布 10月 2016 Copyright © 2005, 2016, Oracle. 保留所有权利。Legal Notices.