[英]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.