一、表达式
(1)条件表达式
共有两种条件表达式,即 CASE 表达式和DECODE 表达式。就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数。如果两个表达式相等,则返回null,如果不相等,则返回第一个表达式。(2)CASE 表达式
CASE 表达式所执行的操作基本上就是IF-THEN-ELSE 语句所执行的操作。CASE、WHEN 和 ELSE 表达式中的数据类型必须相同。
二、CASE 语法
case 表达式 when 比较表达式1 then 返回表达式1
[when 比较表达式2 then 返回表达式2
when 比较表示式n then 返回表达式n
else else_表达式]
end
select 标识, 场所类型, 租金,
case 场所类型
when 'private home' then 'no increase'
when 'hotel' then 'increase 5%'
else 租金
end as "变更后的租金"
from d_地点;
三、DECODE 表达式
DECODE 函数对表达式求值的方式类似于 IF-THEN-ELSE 逻辑。DECODE 将表达式和每个搜索值进行比较。
DECODE 的语法为:
decode(列|表达式, 搜索值1, 结果1[, 搜索值2, 结果2,...,][, 默认值])
如果省略了默认值,则搜索值与任何值都不匹配时,会返回一个null 值。
分析该示例:
select 标识, 场所类型, 租金, decode(场所类型, 'private home', 'no increase', 'hotel', 'increase 5%', 租金)
as "变更后的租金"
from d_地点;