Oracle之decode函数

          说起来也是惭愧,decode函数这么强大的功能竟然前段时间才接触到。大概是平时疏忽掌握学习一些优秀的技术片段,从而于之失之交臂吧。

           前段时间在处理项目的某需求时有这么一个情况:在对商品价格进行查找,一个商品存在多个档次的价格,要求如果商品A档次的价格没有,则使用商品B档次的价格,如果B档次的价格也没有,则使用改商品C档次的价格。初步一看,很简单的一个需求。很惭愧的是,我第一时间想到的是,直接select然后做if判断。虽然这样实现起来并没有什么问题,但是对于系统来说,要多次去调用数据库的查询方法。这只是3个档次,假如有20个档次,难道要写20个select和if判断吗?造成大量的冗余代码不说,逻辑也会一不留神就出错。

           在咨询了某大牛同事之后,得到一个答案,因为我们使用的orcale,所以可以用decode这个函数去实现,只需要在数据库里实现即可,系统仅执行一次查询动作。

           可以这么理解,decode是一个能够实现重复查询的函数。仅需要给予相应的查询条件即可。decode语法如下:

           select  decode (字段,比较值,输出值)  。

           根据我的业务需求,我可以这么写:

           select decode (A,decode(B,decode(C,如果C不存在,输出C),输出B),输出A) ...后面跟上自己的连接语句或者查询条件 。

           完工。。。。其实还是有个小问题,如果有N个档次的时候,是否需要写一个巨大的decode嵌套?

           

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值