三元运算符

&.突然想到用三元运算符,是因为某天项目代码中有很多地方要进行非空判断赋值,一直if else又觉得很多余,然后就想到了三元运算符。

a.java中的三元运算符
        String code = null;
        String result = code !=null ? "18":"15";
        System.out.println(result);
        打印结果:15

解释是:如果code不等于空,result="18",否则result="15"
       这里code = null,所以result = "15".
b.oracle中的三元运算符
1)
NVL( A, B)
如果A不为null,返回A的值,
如果A为null,返回B的值,
如果A和B都为null,返回null

2)NVL2(A,B,C)这是上一个函数的扩展函数。
如果A为null,返回C
如果A不为null,返回B

c .有人又提到decode()这个函数,但是这个函数一般是做定值条件判断

DECODE(条件f,值1,返回值1,值2,返回值2.....值n,返回值n,default)
解释下这个函数:
    1)如果条件f = 值1 该函数的结果为 返回值1
    2)如果条件f = 值2 该函数的结果为 返回值2
                .
                .
    3)如果所以条件都不满足,该函数的结果为 default(默认值,自己设定)
    4)如果没有设置默认值,返回null

有人喜欢直接看代码,上代码:

table:
name      date
------------------
yang      2016-8-27
zhang     
liu
li
------------------
------------------

SQL>select name,decode(date,null,"yes","no") time from table
结果:
name     time
------------------
yang      no
zhang     yes
liu       yes
li        yes
------------------
------------------


SQL>select name,decode(date,null,"yes") time from table
结果:
name     time
------------------
yang      
zhang     yes
liu       yes
li        yes
------------------(没有匹配和默认值,就返回空了)

d.又一说case when可以实现

CASE WHEN 字段 IN ( 'a', 'b') THEN '第一结果'
WHEN 字段 IN ('a')       THEN '第二结果'
ELSE'其他' END

这样写好像也可以,未测试,对case的使用不熟悉。
提供一下思路,感兴趣的可以自己测试。

e.到最后发现又是写到oracle的函数去了,所以说如果oracel使用的好,会让开发方便很多。(个人感觉oracel处理业务是会比java代码处理要快很多的。)

每次写在结尾
新手作品,不断学习,不断改进。仅供参考。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值