当前位置:Gxlcms > 数据库问题 > 关于Oracle中的nvl()函数的使用,中医科查询出院病人信息报错

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

时间:2021-07-01 10:21:17 帮助过:13人阅读

技术分享

然后看到该界面的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   

人气教程排行