oracle筆記(十二)通用函式 doc

2021-08-25 19:07:23 字數 1913 閱讀 7804

通用函式

這些函式適用於任何資料型別,同時也適用於空值

nvl (expr1, expr2)

nvl2 (expr1, expr2, expr3) expr1不為null,返回expr2;為null,返回expr3

nullif (expr1, expr2)相等返回null,不等返回expr1

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

nvl()

將空值轉換成乙個已知的值: l

可以使用的資料型別有日期、字元、數字。 l

函式的一般形式: •

nvl(commission_pct,0) •

nvl(hire_date,'01-jan-97') •

nvl(job_id,'no job yet')

//將comm為null替換成0

sql> select empno,ename,job,mgr,hiredate,sal,nvl(comm,0),deptno from  emp;

//在上面的基礎上將日期為空替換成給定的日期

sql>select empno,ename,job,mgr,nvl(hiredate,to_date('2011-1-10','yyyy-mm-dd')),sal,nvl(comm,0),deptno from  emp;

//在上面的基礎上將job為空替換成redarmy

sql> select empno,ename,nvl(job,'redarmy'),mgr,nvl(hiredate,to_date('2011-1-10','yyyy-mm-dd')),sal,nvl(comm,0),deptno from  emp;

//計算出員工在該月的工資=(薪資+獎金)

sql> select empno,ename,job,mgr,hiredate,(nvl(sal,0)+nvl(comm,0)) as "工資",deptno from  emp;

nvl2 (expr1, expr2, expr3) : expr1不為null,返回expr2;為null,返回expr3。

相當於:expr1!=null?exrp2:expr3;

//計算員工的工資

sql> select empno,ename,job,mgr,hiredate,nvl2(comm,sal+comm,sal) as "工資",deptno from  emp;

nullif (expr1, expr2) :相等返回null,不等返回expr1

//注意觀察理解

sql> select ename as "expr1",job as "expr2",nullif(length(ename),length(job)) from  emp; l

coalesce 與nvl 相比的優點在於coalesce 可以同時處理交替的多個值。 l

如果第乙個表示式為空,則返回下乙個表示式,對其他的引數進行coalesce 。

sql> select empno,ename,job,mgr,hiredate,coalesce(comm,sal,10000) as "salll", deptno from  emp; l

重點理解:單行函式可以巢狀。巢狀函式的執行順序是由內到外。

Oracle 通用函式

to date 功能 字元型資料到日期型資料轉換 格式 to date 引數一,fmt 引數一 字串型資料 引數二 格式元素 yyyy,year,dd,month等 例如 根據員工的入職日期 2月 22 1981 檢視員工的資訊 分析 日期格式應用 22 2月 1981 select ename,h...

Oracle 通用函式

這些函式適用於任何資料型別,同時也適用於空值 nvl 函式 nvl expr1,expr2 expr1為null,返回expr2,否則返回expr1。nvl2 函式 nvl2 expr1,expr2,expr3 expr1不為null,返回expr2 expr1為null,返回expr3。nulli...

Oracle通用函式

因為空值在資料庫中無法進行計算,而且分組函式也會自動忽略空值,所以容易導致計算結果產生錯誤。這時使用者就可以使用通用函式將空值轉換成已知的任意值,通用函式適用於任何資料。可以使用以下通用函式 1 nvl函式 nvl a,b 判斷a是否為空值,如果是就返回b,否則返回a 2 nvl2函式 nvl2 a...