decode 大于比较 小于_ORACLE 中DECODE和 CASE WHEN函数介绍和比较

一、DECODE ( )

语法:decode(expr,search1,result1,

search2,result2,

……

search n,result n, default)

解释:decode函数将expr值与各search值一个一个比对,若expr值等于search值oracle数据库返回其对应的result值;若没有匹配的search值,则返回default值;若函数中default值缺省则返回null。

说明:

1. search, result 和 default 值可以使表达式。oracle数据库使用short-circuit evaluation,简单点说就是按顺序先计算了search1的值跟expr比较,若不行则继续对search2执行一样的操作,一旦找到匹配的search值,则不再对后面的search值进行计算比对。

2. 在比较之前,oracle自动将expr和每一个search值的数据类型转换成第一个search值的数据类型。同理也把所有result值的数据类型转换成第一个result值的数据类型。若第一个result值的数据类型为CHAR或第一个result值缺省,那么oracle就令返回值的数据类型为VARCHAR2。

3.在decode函数中,oracle默认两个null值是相等的,若expr为null,则oracle返回search1的result为null。

4.decode函数中包括expr,search , result 和 default 值在内,最多可包含255个参数。

实例:

SELECT product_id,

DECODE (warehouse_id, 1, 'Southlake',

2, 'San Francisco',

3, 'New Jersey',

4, 'Seattle', 'Non domestic') "Location"

FROM inventories

WHERE product_id < 1775

ORDER BY product_id, "Location";

延伸用法:

1. 与sign函数联用比较大小:

语法:select decode(sign(arg1-arg2),-1, arg1, arg2) from dual; --get arg1与arg2的较小值

实例:select decode(sign(3-5),1 ,3, 5) from dual

注:sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

2. 表、视图结构转化:

基本思路:

使用substrb函数实现对字段的判断,然后用decode函数对数据进行重新计算,并生成新的数据和构成新的表(table or view)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值