Oracle中nvl()和nvl2()函數(shù)實例詳解
Oracle中nvl()與nvl2()函數(shù)詳解:
- 函數(shù)nvl(expression1,expression2)根據(jù)參數(shù)1是否為null返回參數(shù)1或參數(shù)2的值;
- 函數(shù)nvl2(expression1,expression2,expression3)根據(jù)參數(shù)1是否為null返回參數(shù)2或參數(shù)3的值。
1.nvl:根據(jù)參數(shù)1是否為null返回參數(shù)1或參數(shù)2的值
【函數(shù)格式】:nvl(expression1,expression2)
【函數(shù)說明】:
- 若expression1值為null,則該函數(shù)返回expression2;
- 若expression1值不為null,則該函數(shù)返回expression1;
- 若expression1、expression2的值均為null,則該函數(shù)返回null。
【特別說明】:參數(shù)expression1和expression2可以是字符型、數(shù)字型或日期型,但參數(shù)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為數(shù)值型:
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為數(shù)值型:
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:根據(jù)參數(shù)1是否為null返回參數(shù)2或參數(shù)3的值
【函數(shù)格式】:nvl2(expression1,expression2,expression3)
【函數(shù)說明】:
- 若expression1值不為null,則該函數(shù)返回expression2值;
- 若expression1值為null,則該函數(shù)返回expression3值;
- 若expression1、expression2、expression3值均為null,則該函數(shù)返回null。
【特別說明】:
- expression1的類型不需要與expression2和expression3的類型保持一致;
- expression2與expression3的類型盡量保持一致,若不一致,當(dāng)expression1為null時,則expression3會自動轉(zhuǎn)換為expression2的類型,若兩個數(shù)據(jù)類型之間無法轉(zhuǎn)換,則會報錯。
【樣例展示一】: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均為數(shù)值型:
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數(shù)據(jù)類型不一致:
注意:此時expression1有值,因此該函數(shù)直接返回expression2的值,即使expression3的類型無法轉(zhuǎn)換為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均為數(shù)值型:
select nvl2(null,12345,54321) from dual; --返回:54321 select nvl2('',123.45,543.21) from dual; --返回:543.21
expression2和expression3數(shù)據(jù)類型不一致:
注意:此時expression1值為null,因此該函數(shù)會返回expression3的值,若expression3的類型無法轉(zhuǎn)換為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; --執(zhí)行報錯 select nvl2(null,'abcd',sysdate) from dual; --返回:25-2月 -22 select nvl2(null,sysdate,'abcd') from dual; --執(zhí)行報錯
【樣例展示三】: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; --返回:空值
總結(jié)
到此這篇關(guān)于Oracle中nvl()和nvl2()函數(shù)詳解的文章就介紹到這了,更多相關(guān)Oracle nvl()和nvl2()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle基礎(chǔ):程序中調(diào)用sqlplus的方式
今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ):程序中調(diào)用sqlplus的方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12關(guān)于Oracle數(shù)據(jù)庫dbLink的創(chuàng)建和使用詳解
這篇文章主要介紹了關(guān)于Oracle數(shù)據(jù)庫dbLink的創(chuàng)建和使用詳解,Oracle的數(shù)據(jù)庫鏈路dbLink是一種允許在兩個不同的數(shù)據(jù)庫實例之間進行通信和數(shù)據(jù)交換的功能,它可以讓你在一個數(shù)據(jù)庫中訪問另一個數(shù)據(jù)庫的對象和數(shù)據(jù),需要的朋友可以參考下2023-08-08Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法
Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法...2007-03-03Oracle數(shù)據(jù)庫常用命令整理(實用方法)
這篇文章主要介紹了Oracle數(shù)據(jù)庫常用命令整理(實用方法),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06Oracle 如何規(guī)范清理v$archived_log記錄實例詳解
這篇文章主要介紹了Oracle 如何規(guī)范清理v$archived_log記錄實例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05Oracle中查詢表結(jié)構(gòu)的6種方法總結(jié)
工作中查看oracle表結(jié)構(gòu)經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于Oracle中查詢表結(jié)構(gòu)的6種方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04oracle查詢截至到當(dāng)前日期月份所在年份的所有月份
這篇文章主要介紹了oracle查詢截至到當(dāng)前日期月份所在年份的所有月份,本文通過代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07Oracle中的INSTR,NVL和SUBSTR函數(shù)的用法詳解
這篇文章主要介紹了Oracle中的INSTR,NVL和SUBSTR函數(shù)的用法詳解,需要的朋友可以參考下2017-02-02