簡體   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