NVL函式用法

2021-08-20 16:39:00 字數 2201 閱讀 2193

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函式用法

從兩個表示式返回乙個非 null 值。語法nvl eexpression1,eexpression2 引數eexpression1,eexpression2 如果 eexpression1 的計算結果為 null 值,則 nvl 返回 eexpression2。如果 eexpression1 的計算...

Oracle的NVL函式用法

從兩個表示式返回乙個非 null 值。語法nvl eexpression1,eexpression2 引數eexpression1,eexpression2 如果 eexpression1 的計算結果為 null 值,則 nvl 返回 eexpression2。如果 eexpression1 的計算...

Oracle的Nvl函式用法

從兩個表示式返回乙個非 null 值。語法 nvl eexpression1,eexpression2 引數 eexpression1,eexpression2 如果 eexpression1 的計算結果為 null 值,則 nvl 返回 eexpression2。如果 eexpression1 的...