站長資訊網
        最全最豐富的資訊網站

        Oracle中nvl()和nvl2()函數實例詳解

        本篇文章給大家帶來了關于Oracle的相關知識,NVL函數的功能是實現空值的轉換,根據第一個表達式的值是否為空值來返回響應的列名或表達式,下面這篇文章主要給大家介紹了關于Oracle中nvl()和nvl2()函數的相關資料,希望對大家有幫助。

        Oracle中nvl()和nvl2()函數實例詳解

        推薦教程:《Oracle視頻教程》

        Oracle中nvl()與nvl2()函數詳解:

        • 函數nvl(expression1,expression2)根據參數1是否為null返回參數1或參數2的值;
        • 函數nvl2(expression1,expression2,expression3)根據參數1是否為null返回參數2或參數3的值。

        1.nvl:根據參數1是否為null返回參數1或參數2的值

        【函數格式】:nvl(expression1,expression2)

        【函數說明】:

        • 若expression1值為null,則該函數返回expression2;
        • 若expression1值不為null,則該函數返回expression1;
        • 若expression1、expression2的值均為null,則該函數返回null。

        【特別說明】:參數expression1和expression2可以是字符型、數字型或日期型,但參數expression1與expression2的類型必須一致。

        【樣例展示一】:expression1值為null:

        expression2為字符型:

        select nvl(null,'ABCD') from dual;        --返回:ABCD select nvl(null,'abcd') from dual;        --返回:abcd select nvl(null,'12345') from dual;        --返回:12345

        expression2為數值型:

        select nvl(null,12345) from dual;        --返回:12345 select nvl(null,00000) from dual;        --返回:0 select nvl(null,-12345) from dual;        --返回:-12345 select nvl(null,123.45) from dual;        --返回:123.45 select nvl(null,-123.45) from dual;        --返回:-123.45

        expression2為日期時間型:

        select nvl(null,sysdate) from dual;        --返回:2022/2/25 11:54:18 select nvl(null,to_date('2022/2/25 11:54:18','yyyy-mm-dd hh24:mi:ss')) from dual;                        --返回:2022/2/25 11:54:18 select nvl(null,to_date('2022/2/25','yyyy-mm-dd')) from dual;        --返回:2022/2/25 select nvl(null,to_date('2022','yyyy')) from dual;        --返回:2022/2/1

        【樣例展示二】:expression1值不為null:

        expression1為字符型:

        select nvl('ABCD','abcd') from dual;        --返回:ABCD select nvl('abcd','ABCD') from dual;           --返回:abcd select nvl('12345','54321') from dual;        --返回:12345

        expression1為數值型:

        select nvl(12345,null) from dual;        --返回:12345 select nvl(00000,11111) from dual;        --返回:0 select nvl(-12345,null) from dual;        --返回:-12345 select nvl(123.45,-123.45) from dual;        --返回:123.45 select nvl(-123.45,123.45) from dual;        --返回:-123.45

        expression1為日期時間型:

        select nvl(sysdate,null) from dual;        --返回:2022/2/25 12:18:23 select nvl(to_date('2022/2/25 12:18:23','yyyy-mm-dd hh24:mi:ss'),null) from dual;                        --返回:2022/2/25 12:18:23 select nvl(to_date('2022/2/25','yyyy-mm-dd'),null) from dual;        --返回:2022/2/25 select nvl(to_date('2022','yyyy'),null) from dual;        --返回:2022/2/1

        【樣例展示三】:expression1、expression2值均為null:

        select nvl(null,null) from dual;        --返回空值 select nvl('',null) from dual;        --返回空值 select nvl(null,'') from dual;        --返回空值 select nvl('','') from dual;        --返回空值

        2.nvl2:根據參數1是否為null返回參數2或參數3的值

        【函數格式】:nvl2(expression1,expression2,expression3)

        【函數說明】:

        • 若expression1值不為null,則該函數返回expression2值;
        • 若expression1值為null,則該函數返回expression3值;
        • 若expression1、expression2、expression3值均為null,則該函數返回null。

        【特別說明】:

        • expression1的類型不需要與expression2和expression3的類型保持一致;
        • expression2與expression3的類型盡量保持一致,若不一致,當expression1為null時,則expression3會自動轉換為expression2的類型,若兩個數據類型之間無法轉換,則會報錯。

        【樣例展示一】:expression1值不為null:

        expression2和expression3均為字符型:

        select nvl2(0,'ABCD','abcd') from dual;        --返回:ABCD select nvl2('a','ABCD','1234') from dual;        --返回:ABCD select nvl2(sysdate,'1234','abcd') from dual;        --返回:1234

        expression2和expression3均為數值型:

        select nvl2(0,12345,54321) from dual;        --返回:12345 select nvl2('a',123.45,543.21) from dual;        --返回:123.45 select nvl2(sysdate,-12345,-54321) from dual;        --返回:-12345

        expression2和expression3數據類型不一致:

        注意:此時expression1有值,因此該函數直接返回expression2的值,即使expression3的類型無法轉換為expression2的類型也不會報錯。

        select nvl2(0,'ABCD',54321) from dual;        --返回:ABCD select nvl2('a','abcd',543.21) from dual;        --返回:abcd select nvl2(sysdate,'12345',-54321) from dual;        --返回:12345

        【樣例展示二】:expression1值為null:

        expression2和expression3均為字符型:

        select nvl2(null,'ABCD','abcd') from dual;        --返回:abcd select nvl2('','ABCD','1234') from dual;        --返回:1234

        expression2和expression3均為數值型:

        select nvl2(null,12345,54321) from dual;        --返回:54321 select nvl2('',123.45,543.21) from dual;        --返回:543.21

        expression2和expression3數據類型不一致:

        注意:此時expression1值為null,因此該函數會返回expression3的值,若expression3的類型無法轉換為expression2的類型,則會報錯。

        select nvl2(null,'ABCD',54321) from dual;        --返回:54321 select nvl2('','abcd',543.21) from dual;        --返回:543.21 select nvl2('',543.21,'abcd') from dual;        --執行報錯 select nvl2(null,'abcd',sysdate) from dual;        --返回:25-2月 -22 select nvl2(null,sysdate,'abcd') from dual;        --執行報錯

        【樣例展示三】:expression1為null,且expression2或expression3值為null:

        select nvl2(null,null,'123') from dual;        --返回:123 select nvl2(null,'abc',null) from dual;        --返回:空值 select nvl2(null,null,null) from dual;        --返回:空值 select nvl2('','','') from dual;        --返回:空值

        推薦教程:《Oracle視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品夜色噜噜亚洲A∨| 久夜色精品国产一区二区三区| 国产精品 码ls字幕影视| 久久精品国产亚洲AV嫖农村妇女| 国产精品亚洲欧美大片在线看| 91麻豆国产福利精品| 真实国产精品vr专区| 精品乱子伦一区二区三区高清免费播放 | 精品国产福利一区二区| 亚洲国产成人精品女人久久久 | 国内精品在线视频| 精品亚洲国产成AV人片传媒| 亚洲精品无码乱码成人 | 国产精品成人啪精品视频免费| 久久国产精品成人影院| 亚洲日韩精品无码专区网址| 欧美久久久久久午夜精品| 精品久久久久久国产免费了| 成人精品一区二区三区| 欧美视频精品一区二区三区| 国产精品夜色一区二区三区| 国产精品9999久久久久| 久久精品无码专区免费东京热| 亚洲国产精品成人久久| 亚洲国产精品一区第二页| 亚洲高清国产AV拍精品青青草原 | 人妻精品久久久久中文字幕69| 亚洲一区二区三区国产精品| 四虎国产精品永免费| 欧美午夜精品久久久久久浪潮| 久久久99精品一区二区| 精品亚洲成α人无码成α在线观看 | 久久国产精品免费一区二区三区| 国产亚洲精品a在线观看| 国产精品99爱免费视频| 国产精品第一页在线| 国产精品玖玖美女张开腿让男人桶爽免费看 | 国产精品99久久久久久人| 九九精品在线观看| 亚洲国产精品嫩草影院| 国产精品毛片a∨一区二区三区|