Oracle SQL查询结果不存在时的处理方案

需求描述:当查询结果不存在时,展示一条空的数据,查询结果存在时则只展示真实结果。

表数据:

 

 当查询结果不存在时:

 

 需求:当查询结果不存在时,展示一条字段全为nulll的数据。

思路:用union连结一条字段全为null的数据,如下:

 显示结果:

 结果(不理想):

 分析,直接拼接一条字段全为null的数据虽然可以满足查询结果不存在的情况,但当查询结果存在时,拼接的null数据也显示出来了,需要进一步改进。

改进前提:Oracle rownum属性。

rownum介绍:rownum是Oracle引入的虚列,在物理上这个虚列并不存在,只是在查询时才构造出来。伪列通常是自由分配的,用户无法执行修改等操作。

详解可参考oracle中的rownum详解

在SQL中加入rownum

 结果:

 由上图可以看出,rownum可以作为查询结果的编号,使用decode函数,根据rownum的值就可以判断是否有查询结果,并作出相应的展示。(比如当rownum为1是,表示查询结果不存在,只需显示一条字段全为null的数据就行,如果rownum不为1,这显示前rownum-1条数据,不包括那一条字段全为null的数据。)如:

有结果的情况:

 结果:

无查询结果的情况:

 结果:

 问题解决。

总结:合理利用rownum和decode函数可以解决查询结果不存在的问题。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值