码迷,mamicode.com
首页 > 数据库 > 详细

关于Oracle中的nvl()函数的使用,中医科查询出院病人信息报错

时间:2017-11-09 19:45:03      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:函数   信息   出错   logs   变量   否则   image   参数   strong   

中医科查询出院病人信息报下面的错误

技术分享

然后看到该界面的sql为

技术分享

技术分享

 

 然后在plsql里面运行该代码,

技术分享

报错

处理方法:

1.确定报错的位置

技术分享

现在确定出错的位置就是注销掉的那两行代码,

然后

技术分享

然后这就是报错的原因,

技术分享

 是因为他的入院诊断有两条

我想判断一下,如果是中医病区就取中医的诊断否则取西医的

但是宁哥给了一个更好的解决问题的方法

用NVL函数

在介绍这个之前你必须明白什么是oracle中的空值null

1.NVL函数

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

含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

 

2 NVL2函数

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

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值

 

3. NULLIF函数

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

 

 

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 函数等价:

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

所以宁哥把sql改为了

nvl((select jbmc from ys_zy_jbzd where zdlb = ‘入院诊断‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 1 and tjbz = 1 and jzhm = zy_brry.zyh),(select jbmc from ys_zy_jbzd where zdlb = ‘入院诊断‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 2 and tjbz = 1 and jzhm = zy_brry.zyh)) ryzd,


nvl((select jbmc from ys_zy_jbzd where zdlb = ‘出院诊断‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 1 and tjbz = 1 and jzhm = zy_brry.zyh),(select jbmc from ys_zy_jbzd where zdlb = ‘出院诊断‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 2 and tjbz = 1 and jzhm = zy_brry.zyh)) cyzd

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

技术分享

 

关于Oracle中的nvl()函数的使用,中医科查询出院病人信息报错

标签:函数   信息   出错   logs   变量   否则   image   参数   strong   

原文地址:http://www.cnblogs.com/thomasbc/p/7810791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!