Oracle入门(十四E)之条件表达式case和deocde函数

一、表达式

(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_地点;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值