oracle中的nvl , nvl2 函式

2022-07-29 12:30:12 字數 1282 閱讀 4269

nvl()函式是oracle/plpgsql中的乙個函式,格式為:nvl(string1, replace_with)

功能:如果string1 位null,那麼nvl()函式返回replace_with的值,否則返回sting1的值。

注意:sting1和replace_with必須是同一資料型別,除非顯示的適用to_char函式。

例子:

nvl(to_char(some_numeric),』some string』)    --其中some_numeric指某個資料型別的值。

例如:nvl(yan,0)>0

nvl(yan,0) 的意思是如果yan是null, 則取0值。

通過查詢獲得某個欄位的合計值,如果這個值為null,則給出乙個預設的 預設值(此處為0,也可以設定為其他值)。

例如:

select nvl(sum(t.dwx),1) from tb t ;

就表示如果sum(t.dwx) = null就返回1。

還有另一種有關的有用的方法:

declare i integer

select nvl(sum(t.dwx),1) into i from tb t where zx = -1;

以上把獲得的合計值儲存到變數i中,如果查詢的值為null就把它的值設定為1。

其他用法舉例如下:

select nvl(rulescore,0) from zwjc_graderule where rulecode='fwtd';     --如果記錄中不存在rulecode ='fwtd'的資料.則查不出資料.

select nvl(rulescore,0) into rule_score from zwjc_graderule where rulecode='fwtd'; --會報查不到資料的錯

select nvl(sum(rulescore),0) from zwjc_graderule where rulecode='fwtd'; --如果記錄中不存在rulecode ='fwtd'的資料.還是可以得到一行列名為nvl(rulescore,0),值為0的資料.

nvl()的擴充套件-nvl2()

oracle在nvl()函式的功能上擴充套件,提供了nvl2()函式。

nvl2()(e1, e2, e3)的功能為:如果e1為null,則函式返回e3,若e1不為null,則返回e2。

本系列為最近一段時間學習oracle的學習筆記,記錄於此作為自身回顧,其中有的來的網路,有的來的書籍,但時間已久,記不清哪些是引用,如是**但沒標註出,特意致歉。

oracle 中建立表空間2

檢視觸發器 select create or replace trigger trigger name chr 10 decode substr trigger type,1,1 a after b before i instead of chr 10 triggering event chr 10...

oracle 2 oracle的使用者

1 dbca oracle的dbca主要用來管理資料庫,包括建立資料庫 刪除資料庫等。注意 建立資料庫的時候,密碼不能全是數字,也不能以數字開頭 2 ofa oracle flexible architecture oracle優化靈活結構 作用 多oracle版本的管理 ora90 資料庫管理工具...

Oracle中char和varchar2的區別

1.char的長度是固定的,而varchar2的長度是可以變化的,比如,儲存字串 abc 對於char 20 表示你儲存的字元將佔20個位元組 包括17個空字元 在資料庫中它是以空格佔位的,而同樣的varchar2 20 則只占用3個位元組的長度,20只是最大值,當你儲存的字元小於20時,按實際長度...