繁体   English   中英

在where条件中的Oracle Sql Select查询错误

[英]Oracle Sql Select Query Error in Where Condition

假设我有一个条件为false的查询。 在这种情况下,将不会打印任何内容。 但是,如果条件为假,我想打印一些东西。

如何实现呢?

如果条件为真:

Select ename from emp where empno = '1234';

output
===========
ename   
======   
Jagdish

如果条件为假:

select ename from emp where empno = '545120';

output
================
ename
=================

当条件为假时,我要显示“未找到数据”或类似“ N / A”的信息。 你能帮忙吗

如果始终期望最多一行,则可以使用聚合:

select coalesce(max(ename), 'N/A')
from emp
where empno = '1234';

没有group by的聚合查询始终返回一行。 如果所有的行都被过滤掉了,那么聚合函数将返回null因此, coalesce()得到了你想要的。

注意:这假定ename在数据中永远不会为null

您可以使用UNION ALL和NOT EXISTS来做到这一点:

select ename from emp where empno = ?
union all
select 'no data found' from dual 
where not exists (select 1 from emp where empno = ?);

更换? 在两个查询中都使用您搜索的值。
参见演示

用DUAL进行OUTER JOIN,以便总是返回一行:

SELECT COALESCE(e.ENAME, 'No data found') AS ENAME
  FROM DUAL d
  LEFT OUTER JOIN EMP e
    ON e.EMPNO = '545120';

您可以简单地在select子句中添加CASE语句,如下所示:

select CASE WHEN ename IS NULL THEN  'N/A'
       ELSE ename END as ename
from emp where empno = '545120'; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM