oracle decode函数的使用

由于近期的一点点工作,学习了一点点Oracle的东西,仅记录一点:
decode函数和sign函数配合在sql语句中做判断。

decode() 语法:
decode(expression, compare1,value1, compare2, value2, .... ,defaultValue)
意思很简单,如果expression和compareN相等,则返回valueN,如果一个都不相等,则返回defaultValue.

一个最最简单的使用就是为了防止除数等于0,比如
SELECT a/b FROM table;
如果b=0,则会发生 ORA-01476: 除数为 0 错误,如果这样写:
SELECT decode(b,0,0,a/b) FROM table;
如果b=0,则返回0,否则返回a/b。

很显然,如果单单使用decode(),只能做相当于switch-case的功能,那么比如我想判断小于某数的情况呢?

sign(a-b), sign根据a-b和0做比较,大于,等于,小于分别返回1,0,-1,举个例子,我想找所有小于10的b,如果大于10的统统返回100,可以这样写:
SELECT decode(sign(b-10),-1,b,100) FROM table;

以上2点仅自娱自乐,很久没有更新了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值