Oracle中的NVL函式

2021-07-25 01:58:48 字數 2354 閱讀 1908

oracle中函式以前介紹的字串處理,日期函式,數學函式,以及轉換函式等等,還有一類函式是通用函式。主要有:nvl,nvl2,nullif,coalesce,這幾個函式用在各個型別上都可以。

下面簡單介紹一下幾個函式的用法。

在介紹這個之前你必須明白什麼是oracle中的空值null

1.nvl函式

nvl函式的格式如下:nvl(expr1,expr2)

含義是:如果oracle第乙個引數為空那麼顯示第二個引數的值,如果第乙個引數的值不為空,則顯示第乙個引數本來的值。

例如:sql> select ename,nvl(comm, -1) from emp;

ename nvl(comm,-1)

------- ----

smith -1

allen 300

ward 500

jones -1

martin 1400

blake -1

ford -1

miller -1

其中顯示-1的本來的值全部都是空值的

2 nvl2函式

nvl2函式的格式如下:nvl2(expr1,expr2, expr3)

含義是:如果該函式的第乙個引數為空那麼顯示第二個引數的值,如果第乙個引數的值不為空,則顯示第三個引數的值。sql> select ename,nvl2(comm,-1,1) from emp;

ename nvl2(comm,-1,1)

------- -----

smith 1

allen -1

ward -1

jones 1

martin -1

blake 1

clark 1

scott 1

上面的例子中。凡是結果是1的原來都不為空,而結果是-1的原來的值就是空。

3. nullif函式

nullif(exp1,expr2)函式的作用是如果exp1和exp2相等則返回空(null),否則返回第乙個值。

下面是乙個例子。使用的是oracle中hr schema,如果hr處於鎖定,請啟用

這裡的作用是顯示出那些換過工作的人員原工作,現工作。

sql> select e.last_name, e.job_id,j.job_id,nullif(e.job_id, j.job_id) 「old job id」

from employees e, job_history j

where e.employee_id = j.employee_id

order by last_name;

last_name job_id job_id old job id

----------------- ------- ------- -------

de haan ad_vp it_prog ad_vp

hartstein mk_man mk_rep mk_man

kaufling st_man st_clerk st_man

kochhar ad_vp ac_mgr ad_vp

kochhar ad_vp ac_account ad_vp

raphaely pu_man st_clerk pu_man

taylor sa_rep sa_man sa_rep

taylor sa_rep sa_rep

whalen ad_asst ac_account ad_asst

whalen ad_asst ad_asst

可以看到凡是employee。job_id和job_histroy.job_id相等的,都會在結果中輸出null即為空,否則顯示的是employee。job_id

4.coalesce函式

coalese函式的作用是的nvl的函式有點相似,其優勢是有更多的選項。

格式如下:

coalesce(expr1, expr2, expr3….. exprn)

表示可以指定多個表示式的佔位符。所有表示式必須是相同型別,或者可以隱性轉換為相同的型別。

返回表示式中第乙個非空表示式,如有以下語句:   select coalesce(null,null,3,4,5) from dual   其返回結果為:3

如果所有自變數均為 null,則 coalesce 返回 null 值。   coalesce(expression1,...n) 與此 case 函式等價:

這個函式實際上是nvl的迴圈使用,在此就不舉例子了。

oracle中的nvl函式

格式為 nvl string1,replace with 功能 如果string1為null,則nvl函式返回replace with的值,否則返回string1的值,如果兩個引數都為null 則返回null。注意事項 string1和replace with必須為同一資料型別,除非顯式的使用to ...

Oracle中的NVL函式

oracle中函式nvl,nvl2,nullif,coalesce,這幾個函式用在各個型別上都可以。下面簡單介紹一下幾個函式的用法。1.nvl函式 nvl函式的格式如下 nvl expr1,expr2 含義是 如果oracle第乙個引數為空那麼顯示第二個引數的值,如果第乙個引數的值不為空,則顯示第乙...

Oracle中的NVL函式

oracle中函式以前介紹的字串處理,日期函式,數學函式,以及轉換函式等等,還有一類函式是通用函式。主要有 nvl,nvl2,nullif,coalesce,這幾個函式用在各個型別上都可以。下面簡單介紹一下幾個函式的用法。在介紹這個之前你必須明白什麼是oracle中的空值null 1.nvl函式 n...