Oracle 11g 中的 NVL 函数

NVL function in Oracle 11g

我在以下查询的其中一个表中没有数据;我的结果集是空的。但是,我正在尝试使用 NVL() FUNCTION;它仍然给出空集。 有人可以帮助我理解这种行为。然而,我的期望是显示“0”;得到空结果。我正在使用 Oracle 11g。

SELECT NVL(T8.COLLECTION_BALANCE_AMT, 0)
      from BV_COLLECTION_CLAIM T8 JOIN BV_CLAIM_LIABLE_INDV T2
      ON T8.CLAIM_ID = T2.CLAIM_ID
      JOIN BV_CLAIM_RECOVERY T3
      ON T8.CLAIM_ID = T3.CLAIM_ID

A join 只有 returns 匹配行。您正在寻找一个 left join,它将 return null 用于连接的 table 中的列,其中匹配 不存在

SELECT    NVL(T8.COLLECTION_BALANCE_AMT, 0)
FROM      BV_COLLECTION_CLAIM T8 
LEFT JOIN BV_CLAIM_LIABLE_INDV T2 -- here!
       ON T8.CLAIM_ID = T2.CLAIM_ID
LEFT JOIN BV_CLAIM_RECOVERY T3  -- here too!
       ON T8.CLAIM_ID = T3.CLAIM_ID