需求描述:当查询结果不存在时,展示一条空的数据,查询结果存在时则只展示真实结果。
表数据:
当查询结果不存在时:
需求:当查询结果不存在时,展示一条字段全为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函数可以解决查询结果不存在的问题。