2012-05-01 65 views
2

我在編寫oracle sql時頭疼。當我的SQL返回0行時,我需要它返回「空」而不是返回0行。例如,需要oracle sql在選擇0行時返回1行

select name from employee where id=1; 

結果:

0 rows selected 

我需要它返回這樣的:

Empty 

1選擇

由於在DB沒有這樣的戰績,排有辦法做到這一點?我確實需要它返回一個值。謝謝!

回答

5
select name 
from employee 
where id=1 
union all 
select 'Empty' 
from dual 
where not exists (select 1 from employee where id=1) 
2

修訂

SELECT NVL((select name from employee where id=1), 'Empty') name from dual 

感謝@塞穆爾的想法!

+0

這是行不通的。沒有結果不同於名稱爲空。遵循你的想法,答案將是:從雙重選擇nvl((從id = 1的員工中選擇姓名),'Empty')姓名。假設名稱不能爲空,且id是唯一的。 – Samuel

+0

如果你想要多行,會發生什麼? – Ben

+0

@Ben:我做了一個實驗運行,它工作10克... – Turbot