Oracle 合并 returns 空白

Oracle Coalesce returns blank

我有以下查询,它使用合并 return 具有特定代码的日历的 ID

 SELECT COALESCE(SD_CALENDAR.ID,0) FROM SD_CALENDAR WHERE SD_CALENDAR.CODE = 'BOER';

但是当我 运行 这样做时,我得到一个空白列,而不是 0。我需要更改什么才能使我的查询正常工作?

你说你的 table 中没有行匹配你的查询,所以你试图在没有匹配时 return 0,而不是 return 根本没有数据.

如果 NAME 是唯一的,那么您可以使用聚合来实现此目的:

SELECT COALESCE(MAX(SD_CALENDAR.ID),0) FROM SD_CALENDAR WHERE SD_CALENDAR.CODE = 'BOER';

MAX()总是return一行;如果有匹配项,它将是单个 ID,如果没有匹配项,它将为 null - 然后您可以将其合并为零。

如果 NAME 不是唯一的并且您希望返回多个值,那么您可以在没有匹配项时使用联合来提供零值:

SELECT COALESCE(SD_CALENDAR.ID,0) FROM SD_CALENDAR WHERE SD_CALENDAR.CODE = 'BOER'
UNION ALL
SELECT 0 FROM DUAL WHERE NOT EXISTS (
  SELECT COALESCE(SD_CALENDAR.ID,0) FROM SD_CALENDAR WHERE SD_CALENDAR.CODE = 'BOER'
);

根据您的操作,可能 better/easier 让您的应用程序处理未找到数据的结果并自己替换为零。