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
我在以下查询的其中一个表中没有数据;我的结果集是空的。但是,我正在尝试使用 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