oracle 三步运算符,ORA-01476: 除数为 0

假设是a/b

decode(b,0,null,a/b) 这样如果b为0,输出null,不为0输出a/b

decode():将查询结果翻译成其他值,类似三目运算符

比较1个参数时      decode(column,'param','值1' ,'值2')

其中column为要选择的table中所定义的column,

#如果column=='param',则select得到的name显示为值1,

#如果column!='param',则select得到的name显示为值2。

多个参数时

decode(inParam,'para1','值1' ,'para2','值2','para3','值3','para4','值4','para5','值5') name

#如果第一个参数inParam=='para1'那么那么select得到的那么显示为值1;

#如果第一个参数inParam=='para2'那么那么select得到的那么显示为值2;

#如果第一个参数inParam=='para3'那么那么select得到的那么显示为值3;

#如果第一个参数inParam=='para4'那么那么select得到的那么显示为值4;

#如果第一个参数inParam=='para5'那么那么select得到的那么显示为值5;

#都不相等就为''

用处

1.除数为 0

SELECT

trim(to_char(ROUND(decode(sum(a.QUTANTITY),0,null,sum(a.AMOUNT)/sum(a.QUTANTITY)),4))) AS CAvgPrice

FROM

POSITION a

2.解决Oracle的数值0.5只显示成.5问题

SELECT decode(substr(l_num,1,1),'.','0'||l_num,l_num)FROMDUAL;decode(substr((to_char(b.ReportValue)),0,1),'.','0'||to_char(b.ReportValue),to_char(b.ReportValue)) as Test_Result

SELECT decode(substr(0.5,1,1),'.','0'||.5,0.5) FROM DUAL;

substr获取该字段的 第一位,decode判断是否为 “  .  ”      是的话, ‘0’||字段,  拼接;  否   返回 该字段

SELECT regexp_replace(l_num, '^\.', '0.') FROM dual //也能实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值