2012-05-01 8 views
2

oracle sqlの作成時に頭痛があります。私のSQLが0行を返すとき、私は0行を返す代わりに "空"を返す必要があります。例えば、oracle sqlは、0行が選択されたときに1行を戻す必要があります。

select name from employee where id=1; 

結果:

Empty 

1行は、DBには、そのようなレコードが存在しないので、

選択される:

0 rows selected 

私は、このような返す必要それを行う方法がありますか?私はそれが価値を返す必要があります。ありがとうございました! Samualのアイデア@

答えて

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

UPDATED

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

感謝!!

+0

これは動作しません。名前がnullである場合と異なる結果はありません。あなたのアイデアの答えは次のようになります。select nvl((従業員の名前をid = 1から選択)、「Empty」)の名前を二重から選択します。これは、nameがnullでなく、idが一意であると仮定します。 – Samuel

+0

複数の行が必要な場合はどうなりますか? – Ben

+0

@Ben:実験をしましたが、10gで動作します... – Turbot

関連する問題