NVL是Oracle PL/SQL中的一個(gè)函數(shù)。它的格式是NVL( string1,replace_with)。它的功能是如果string1為NULL,則NVL函數(shù)返回replace_with的值,否則返回string1的值,如果兩個(gè)參數(shù)都為NULL ,則返回NULL。
nvl_nvl -定義
Oracle PL/SQL中的一個(gè)函數(shù)。
格式為:
NVL( string1, replace_with)
功能:如果string1為NULL,則NVL函數(shù)返回replace_with的值,否則返回string1的值,如果兩個(gè)參數(shù)都為NULL ,則返回NULL。
注意事項(xiàng):string1和replace_with必須為同一數(shù)據(jù)類型,除非顯式的使用TO_CHAR函數(shù)進(jìn)行類型轉(zhuǎn)換。
例:NVL(TO_CHAR(numeric_column), 'some string') 其中numeric_column代指某個(gè)數(shù)字類型的值。
例:nvl(yanlei777,0)>0
NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 則取 0值
通過查詢獲得某個(gè)字段的合計(jì)值,如果這個(gè)值為null將給出一個(gè)預(yù)設(shè)的默認(rèn)值
例如:
select nvl(sum(t.dwxhl),1)
from tb_jhde t
就表示如果sum(t.dwxhl) = NULL 就返回 1
另一個(gè)有關(guān)的有用方法
declare i integer
select nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1這樣就可以把獲得的合計(jì)值存儲(chǔ)到變量
i中,如果查詢的值為null就把它的值設(shè)置為默認(rèn)的1
orcale中:
select nvl(rulescore,0) from zwjc_graderule where rulecode='FWTD';
如果記錄中不存在rulecode ='FWTD'的數(shù)據(jù).則查不出數(shù)據(jù).
select nvl(rulescore,0) into rule_score from zwjc_graderule where rulecode='FWTD';會(huì)報(bào)查不到數(shù)據(jù)的錯(cuò)
select nvl(sum(rulescore),0) from zwjc_graderule where rulecode='FWTD';
如果記錄中不存在rulecode ='FWTD'的數(shù)據(jù).還是可以得到一行列名為nvl(rulescore,0),值為0的數(shù)據(jù).
select nvl(sum(rulescore),0) into rule_score from zwjc_graderule where rulecode='FWTD'; 不會(huì)報(bào)錯(cuò)
nvl_nvl -功能擴(kuò)展
Oracle在NVL函數(shù)的功能上擴(kuò)展,提供了NVL2函數(shù)。
NVL2(E1, E2, E3)的功能為:如果E1為NULL,則函數(shù)返回E3,否則返回E2。

愛華網(wǎng)本文地址 » http://www.klfzs.com/a/8103420103/92189.html
愛華網(wǎng)



