2015-01-23 2 views
0

Я пытаюсь выяснить, как вернуть константу в результате, когда набор результатов пуст.Oracle Return Constant When Empty Result

Пример

Запрос будет:

select employee_id from employee where name = 'John_Doe'; 

В этом случае, Джон Доу не существует в системе. Вместо того, чтобы возвращать пустой набор, как я могу вернуть константу, например, число 0? Я видел вещи с аргументами case, но я не уверен, как это реализовать.

Благодарим за помощь.

ответ

5

Когда я столкнулся с проблемой всегда возвращать ровно одну строку, я часто использую агрегацию. Ниже будет возвращать NULL если нет матча:

select max(employee_id) 
from employee 
where name = 'John_Doe'; 

следующие возвращает 0:

select coalesce(max(employee_id), 0) 
from employee 
where name = 'John_Doe'; 
+0

Мне очень жаль, мой пример не был ясен. В моем случае столбец, который я хотел бы вернуть, является значением String. Есть ли способ вернуть константу, когда запрашиваемый столбец является строкой? – user1472409

+0

Всегда ли ваши критерии поиска возвращают 1 или 0 строк? Если это так, вы можете спокойно использовать 'MAX()' в своей строке. Если вы могли бы сопоставить несколько строк, вам нужно будет использовать более сложный запрос, чтобы вернуть нужное вам значение. –

+0

@ пользователь1472409. , , Просто добавьте значение в кавычки, если вы хотите, чтобы строка была постоянной. Но в вашем вопросе четко сказано: «как, например, число 0». –