Oracle中的逻辑判断(nvl、decode和case when)

          刚结束一个项目,感觉在数据库查询时逻辑判断用的特别多,用到了nvl、decode和case when,下面讲一下这几种逻辑判断方式的异同,自己整理的,可能有些地方说错,希望大家提出来:


          NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值 通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值


          DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ),Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

         

           case when语句类似于C#语法中的if else语法,比如:select case when id > 0 then 1 else 0 end as flag from table1,这句sql就表示 筛选所有table1中的记录,当id大于0时,新的flag列就为1,否则,flag列为0


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值