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

29 篇文章 1 订阅
11 篇文章 0 订阅

函数声明: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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值