比如这段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实现,得不偿失。
想了解更多数据库知识可以关注我的公众号:唯一的小彬哥