Oracle 查询,如何实现 无结果返回0,注意不是字段为空返回0

比如这段sql:
SELECT DJBH FROM DJTABLE WHERE DJNM = {DJNM};
因为存在where条件,所以当where不满足时会查询无结果,能否实现查询无结果的时候返回0,而不是返回空
用nvl函数或者isnull不好使,nvl或者isnull都只有在字段为空,但有查询结果的时候才能生效,换句话说要满足where条件时才行
试了一下写case …… when …… then …… 也不行。
那么不满足where条件有办法吗?

就你的示例sql能做到,使用聚合函数就能做到了,缺点也很明显

非得数据库实现?
select count(*) from XXX where XXX
你可以先查一下是否有满足的。

其实这是应用该做的事情
if rs.next 。。。
else 无结果

如果DJNM 返回的结果是1行或者0行,那么可以用聚合函数解决,聚合函数永远会返回一个值,需要的值或者NULL值
类型下面的写法


SELECT NVL(MAX(DJBH),0) FROM DJTABLE WHERE DJNM = {DJNM};

如果你通过DJNM 超过一行,并且希望空的时候返回0,那么这个问题没法通过简单SQL实现,得不偿失。
想了解更多数据库知识可以关注我的公众号:唯一的小彬哥