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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Oracle中的nvl()函数的使用,中医科查询出院病人信息报错相关的知识,希望对你有一定的参考价值。

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

技术分享

然后看到该界面的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()函数的使用,中医科查询出院病人信息报错的主要内容,如果未能解决你的问题,请参考以下文章

关于NVL函数的小笔记

Oracle中的NVL函数

Oracle中的NVL函数

Oracle中的NVL函数

ORACLE NVL 和 NVL2 函数的使用

Oracle中的NVL,NVL2,NULLIF,COALESCE函数