![](/img/trans.png)
[英]Oracle SQL - select query with where condition greater than certain moment defined in a timestamp column
[英]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.