Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语言元素 » 表达式

 

CASE 表达式

CASE 表达式提供条件 SQL 表达式。Case 表达式可以在任何能够使用表达式的地方使用。

CASE 表达式的语法如下:

CASE expression
WHEN expression
THEN expression, ...
[ ELSE expression ]
{ END | END CASE }

如果 CASE 语句后的表达式等于 WHEN 语句后的表达式,则返回 THEN 语句后的表达式。否则,返回 ELSE 语句后的表达式(如果它存在)。

例如,以下代码用 CASE 表达式作为 SELECT 语句的第二个子句。

SELECT ID,
   ( CASE Name
      WHEN 'Tee Shirt' then 'Shirt'
      WHEN 'Sweatshirt' then 'Shirt'
      WHEN 'Baseball Cap' then 'Hat'
      ELSE 'Unknown'
   END ) as Type
FROM Products;

也可以使用以下语法:

CASE
WHEN search-condition
THEN expression, ...
[ ELSE expression ]
END [ CASE ]

如果满足 WHEN 语句后的搜索条件,则返回 THEN 语句后的表达式。否则,返回 ELSE 语句后的表达式(如果它存在)。

例如,以下语句使用 CASE 表达式作为 SELECT 语句的第三子句,以将字符串与搜索条件相关联。

SELECT ID, Name,
   ( CASE
      WHEN Name='Tee Shirt' then 'Sale'
      WHEN Quantity >= 50  then 'Big Sale'
      ELSE 'Regular price'
   END ) as Type
FROM Products;
用于简写 CASE 表达式的 NULLIF 函数

NULLIF 函数提供了一种方法来以短格式编写某些 CASE 语句。NULLIF 的语法如下:

NULLIF ( expression-1, expression-2 )

NULLIF 比较两个表达式的值。如果第一个表达式的值与第二个表达式的值相等,NULLIF 返回 NULL。如果它们不相等,NULLIF 则返回第一个表达式。

CASE 语句不同于 CASE 表达式

不要将 CASE 表达式和 CASE 语句的语法相混淆。有关 CASE 语句的信息,请参见CASE 语句