三元運算符

&.突然想到用三元運算符,是因爲某天項目代碼中有很多地方要進行非空判斷賦值,一直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代碼處理要快很多的。)

每次寫在結尾
新手作品,不斷學習,不斷改進。僅供參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章