oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值

函数声明:nvl(col,val) 


说明:当col为空时取val作为返回值,当col不为空时取col值。 


用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上nvl就不会了。 

一般写视图的时候的为数字的项为null或没有默认值可能会引起hibernate抛异常,这是需要把null附一个值,用此函数

create or replace view tb_v_pmg_appraisereport as

SELECT 

       T.C_OBJECTID               C_EMPOID,

       emp.c_code                 C_EMPCODE,

       emp.c_name                 C_EMPNAME,

       org.c_oid_orgunit          C_UNITID,

       org.c_name                 C_UNITNAME,

       T.C_OID_OBJECT             C_OID,

       PC.C_NAME                  C_PRECEPTNAME,

       PC.C_OID_PRECEPT           C_PRECEPTID,

       PH.C_OID_PHASE             C_PHASEID,

       PH.C_NAME                  C_PHASENAME,

       PH.C_BEGINDATE             C_PHBEGINDATE,

       PH.C_ENDDATE               C_PHENDDATE,

       T.C_COMPETITION            C_COMPETITION,

       nvl(D.C_OID_DISTRIBUTERATEITEM,-1) C_DISTRIBUTEID,

       D.C_NAME                   C_DISTRIBUTENAME,

       T.C_EVALUATESCORE          C_EVALUATESCORE,

       T.C_APPROVESCORE           C_APPROVESCORE,

       T.C_PERFORMANCESCORE       C_PERFORMANCESCORE,

       T.C_SCOREDESC              C_SCOREDESC,

       T.c_Appraisereportid       C_UPLOADID,

       T.C_OPERATOR               C_OPERATOR,

       T.C_OPERATETIME            C_OPERATETIME

  FROM TB_PMG_OBJECT T

  LEFT JOIN TB_PMG_DISTRIBUTERATEITEM D ON D.C_OID_DISTRIBUTERATEITEM =

                                           T.C_DISTRIBUTEID,

 TB_PMG_PRECEPT PC, TB_PMG_PHASE PH, 

 tb_inf_employee emp, tb_org_orgunit org

 WHERE PC.C_OID_PRECEPT = T.C_PRECEPTID

   AND PH.C_OID_PHASE = T.C_PHASE

   AND PC.C_TYPE = '1'

   AND t.c_objectid = emp.c_employeeid

   AND org.c_oid_orgunit = emp.c_unitid

 ORDER BY T.C_OBJECTID, PC.C_OID_PRECEPT, PH.C_BEGINDATE 

猜你喜欢

转载自bigdragon.iteye.com/blog/1616853
今日推荐