CASE表达式
CASE 表达式有两种形式:通用的 CASE 表达式和线性的 CASE 表达式。
在 CASE 表达式中,您必须包括至少一个 WHEN 子句。随后的 WHEN 子句和 ELSE 子句是可选的。
通用 CASE 表达式
通用的 CASE 表达式测试 WHEN 子句中为真的条件。如果它发现为真的条件,则它返回在 THEN 子句中指定的结果。
语法图解
语法格式
CASE WHEN condition THEN expr | NULL { WHEN condition THEN expr | NULL } [ ELSE expr | NULL ] END
数据库服务器以 WHEN 子句在该语句出现的顺序处理它们。如果 WHEN 子句的搜索条件求值为 TRUE,则数据库服务器使用对应的 THEN 表达式的值作为结果,并停止处理该 CASE 表达式。
示例
SELECT cust_name,
CASE
WHEN number_of_problems = 0 THEN 100
WHEN number_of_problems > 0 AND number_of_problems < 4 THEN number_of_problems * 500
WHEN number_of_problems >= 4 and number_of_problems <= 9 THEN number_of_problems * 400
ELSE (number_of_problems * 300) + 250
END
,cust_address
FROM custtab
线性 CASE 表达式
线性的 CASE 表达式将跟在 CASE 关键字之后的表达式的值与 WHEN 子句中的表达式作比较。
语法图解
语法格式
CASE expr WHEN expr THEN expr | NULL { WHEN expr THEN expr | NULL } [ ELSE expr | NULL ] END
数据库服务器以 WHEN 子句在该语句出现的顺序处理它们。如果 WHEN 子句的表达式返回的值与跟在 CASE 的expr的值相等,则数据库服务器使用对应的 THEN 表达式的值作为结果,并停止处理该 CASE 表达式。
示例
线性的 CASE 表达式。对于电影标题表中的每部电影,该查询返回电影的标题、成本和类型。该语句使用 CASE 表达式来派生每部电影的类型:
SELECT title, CASE movie_type
WHEN 1 THEN 'HORROR'
WHEN 2 THEN 'COMEDY'
WHEN 3 THEN 'ROMANCE'
WHEN 4 THEN 'WESTERN'
ELSE 'UNCLASSIFIED'
END
,our_cost FROM movie_titles;
|