2012-05-01 4 views
2

У меня возникла головная боль при написании оракула sql. Когда мой sql возвращает 0 строку, мне нужно, чтобы он возвращал «пустой» вместо того, чтобы возвращать 0 строк. Например,need oracle sql возвращает 1 строку при выборе 0 строк

select name from employee where id=1; 

Результат:

0 rows selected 

мне нужна она возвращается, как это:

Empty 

1 строка выбрана

Поскольку нет такой записи в дБ, является есть способ сделать это? Мне нужно вернуть значение. Спасибо!

ответ

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 

Спасибо @ идее Samual в !!

+0

Это не сработает. Никакие результаты не отличаются от имени null. Следуя вашей идее, ответ будет следующим: выберите nvl ((выберите имя от сотрудника, где id = 1), «Пустое») имя из двойного. Предположим, что имя не может быть null и id уникально. – Samuel

+0

Что произойдет, если вы хотите больше одной строки? – Ben

+0

@Ben: Я провел эксперимент, и он работает на 10 г ... – Turbot

Смежные вопросы