标签:函数 信息 出错 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