oracle sql查询结果为空时如何显示一条空记录
1、首先,我们来看下oracle sql普通查询时查询结果为空时的显示情况如下图所示。可以看到没做特殊处理时查询结果中一条记录都没有,此处的查询sql记为A查询。

2、然后,我们第一时间会想到既然要求查询结果为空时显示一条空记录,我们首先得创造出一条空记录来,于是想到用一条空记录来和上面的sql查询union 一下,得到了如下查询结果:

3、从上面查询结果中我们好像看到了那就是我们想要达到的预期效果,但是问题来了,一旦我查询条件变化时(查询条件中的loginname参数值变化),结果还会令人满意吗?我们来看下:

1、由上步查询结果我们可以看到,当原来查询sql查询结果不为空时,我们单纯按照union一条空记录的方法是不行的,因为我们希望实现动态地处理查询结果,即当查询结果不为空时则按正常查询结果显示,只有当查询结果为空时才显示一条空记录。于是,这里我们需要引入oracle rownum伪列来进行特殊处理。先看下使用rownum的简单查询结果,此处的查询sql记为B查询:


2、由上步查询结果我们看到,rownum其实就是sql查询结果记录的编号。我们可以通过控制rownum的范围来实现特殊的查询效果,如rownum<=n则可以查询查询结果中的前n条记录,我们需要确定的就是这个n值,这里我们借助decode函数来确定:


3、最后我们整合下,得到最后的查询sql,即当A查询结果为空时我们取n=1,当A查询记录不为空时,我们取n=A查询的总记录数,最后将rownum<=n的查询条件写到B查询中得到想要的结果,如下:


声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:33
阅读量:118
阅读量:65
阅读量:55
阅读量:114