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

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite SQL 参考 » UltraLite SQL 元素 » UltraLite 中的表达式

 

CASE 表达式

提供条件 SQL 表达式。

语法 1
CASE  expression1
WHEN expression2 THEN expression3, ...
[ ELSE expression4 ]
END
SELECT id,
   ( CASE name
      WHEN 'Tee Shirt' THEN 'Shirt'
      WHEN 'Sweatshirt' THEN 'Shirt'
      WHEN 'Baseball Cap' THEN 'Hat'
      ELSE 'Unknown'
   END ) as Type
FROM Product;
语法 2
CASE
WHEN search-condition
THEN expression1, ...
[ ELSE expression2 ]
END
注释

出于兼容性考虑,此表达式可用 ENDCASE 或 END CASE 结尾。

Case 表达式可以在能够使用正则表达式的任何地方使用。

语法 1   如果 CASE 关键字后的表达式等于第一个 WHEN 关键字后的表达式,则返回相关联的 THEN 关键字后的表达式。否则,返回 ELSE 关键字后的表达式(如果已指定)。

例如,以下代码用 CASE 表达式作为 SELECT 语句的第二个子句。它从 Product 表中选择一行,其中名称列具有值 Sweatshirt。

语法 2   如果第一个 WHEN 关键字后的搜索条件为 TRUE,则返回相关联的 THEN 关键字后的表达式。否则,返回 ELSE 子句后的表达式(如果已指定)。

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

NULLIF ( expression-1, expression-2 )

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

示例

以下语句使用 CASE 表达式作为 SELECT 语句的第三子句,以将字符串与搜索条件相关联。如果名称列的值为 Tee Shirt,则查询返回 Sale。如果名称列的值不是 Tee Shirt 且数量多于 50,则返回 Big Sale。但是,对于其它所有情况,查询返回 Regular price

SELECT id, name,
   ( CASE
      WHEN name='Tee Shirt' THEN 'Sale'
      WHEN quantity >= 50  THEN 'Big Sale'
      ELSE 'Regular price'
   END ) as Type
FROM Product;