oracle sql查询结果为空时如何显示一条空记录

工作中经常会写简单或复杂的sql查询,有时需要在sql查询基础上做些特殊处理以实现特殊显示效果。本经验将介绍oracle sql查询时,如果查询结果为空时(查询结果一条记录也没有),如何显示一条空记录(有一条记录,只是记录中的字段都为空值),同时当查询结果不为空时则按正常查询结果显示。这里我们借助的是oracle rownum属性。

方法步骤 一、

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

oracle sql查询结果为空时如何显示一条空记录_第1张图片




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

oracle sql查询结果为空时如何显示一条空记录_第2张图片





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

oracle sql查询结果为空时如何显示一条空记录_第3张图片





方法步骤 二、

①、

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

oracle sql查询结果为空时如何显示一条空记录_第4张图片
oracle sql查询结果为空时如何显示一条空记录_第5张图片










②、

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

oracle sql查询结果为空时如何显示一条空记录_第6张图片
oracle sql查询结果为空时如何显示一条空记录_第7张图片















③、

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

oracle sql查询结果为空时如何显示一条空记录_第8张图片
oracle sql查询结果为空时如何显示一条空记录_第9张图片


















本文转载自:https://jingyan.baidu.com/article/73c3ce28178ae8e50343d91e.html

你可能感兴趣的:(Oracle)