我使用函数从数据库中选择值。我有三个不同的函数,如果第一个函数不返回任何内容,则使用NVL2检查第二个和第三个函数的值。问题是,当我执行独立的函数时,它们返回值,但在NVL2函数中没有返回值,我的查询是:
select NVL2(CRBP.FPDATE(LAM.ACID),
CRBP.FPDATE1(LAM.ACID),
CRBP.ODSANCDATE(GAM.ACID)) from
tbaadm.lam, TBAADM.GAM
where gam.acid = lam.acid
and gam.acid = 'VM12990'这不返回任何值。
但当我执行:
select CRBP.FPDATE (LAM.ACID) from tbaadm.lam where lam.acid = 'VM12990';这已经返回了一个值。考虑到这是检查中的第一个查询,这不是第一个查询返回的值吗?我的第一个问题是什么??
发布于 2014-03-07 10:24:17
如果CRBP.FPDATE返回一个值,查询应该返回函数CRBP.FPDATE1返回的值,如果CRBP.FPDATE返回NULL,那么查询应该返回CRBP.ODSANCDATE的vlaue。
CRBP.FPDATE1返回什么了吗?
发布于 2016-10-27 15:30:04
NVL2(a,b,c)是一个“如果a为null,那么另一个为b”的类型函数。因此,a的值永远不会返回。
听起来您需要COALESCE,它将从一组参数返回第一个非空值。
https://stackoverflow.com/questions/22246609
复制相似问题