Sql 结果为空时Oracle返回常量

Sql 结果为空时Oracle返回常量,sql,oracle,Sql,Oracle,我试图找出当结果集为空时如何返回常量作为结果 范例 一个问题是: select employee_id from employee where name = 'John_Doe'; 在这种情况下,系统中不存在John Doe。我怎样才能返回一个常量,比如数字0,而不是返回一个空集呢?我见过案例陈述,但我不确定如何实现它 感谢您的帮助。当我遇到总是只返回一行的问题时,我经常使用聚合。如果不存在匹配项,以下内容将返回NULL: select max(employee_id) from employ

我试图找出当结果集为空时如何返回常量作为结果

范例

一个问题是:

select employee_id from employee where name = 'John_Doe';
在这种情况下,系统中不存在John Doe。我怎样才能返回一个常量,比如数字0,而不是返回一个空集呢?我见过案例陈述,但我不确定如何实现它


感谢您的帮助。

当我遇到总是只返回一行的问题时,我经常使用聚合。如果不存在匹配项,以下内容将返回
NULL

select max(employee_id)
from employee
where name = 'John_Doe';
以下返回0:

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

当我遇到总是只返回一行的问题时,我经常使用聚合。如果不存在匹配项,以下内容将返回
NULL

select max(employee_id)
from employee
where name = 'John_Doe';
以下返回0:

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

对不起,我的例子不清楚。在我的例子中,我想返回的列是一个字符串值。当查询的列是字符串时,是否有方法返回常量?您的搜索条件是否总是返回1行或0行?如果是这样,您仍然可以安全地在字符串上使用
MAX()
。如果可能匹配多行,则必须使用更复杂的查询返回实际需要的值。@user1472409。如果需要字符串常量,只需将值括在引号中。但你的问题清楚地说:“比如数字0”。对不起,我的例子不清楚。在我的例子中,我想返回的列是一个字符串值。当查询的列是字符串时,是否有方法返回常量?您的搜索条件是否总是返回1行或0行?如果是这样,您仍然可以安全地在字符串上使用
MAX()
。如果可能匹配多行,则必须使用更复杂的查询返回实际需要的值。@user1472409。如果需要字符串常量,只需将值括在引号中。但你的问题清楚地说:“比如数字0”。