为什么LEFT JOIN导致ORA-22922:不存在LOB值?

时间:2017-02-02 15:30:43

标签: oracle join

遇到一个不会阻止我的JOIN问题,但我想了解它。

JOIN在数字列上非常基础。它在某些情况下有效,在另一些情况下失败。两列之间的架构定义存在差异。

为了说明问题而发明的例子。

模式

ADDRESS.COUNTRYID NUMBER
COUNTRY.ID NOT NULL NUMBER(38) 

加入

JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID    works
INNER JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID    works
LEFT JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID    nonexistent LOB value

请不要评论架构。不是我的。

帮助我了解导致某些案例中LEFT JOIN失败的原因。在大多数情况下,此LEFT JOIN有效。在LEFT JOIN失败的情况下,我尝试了JOIN和INNER JOIN,他们都工作了!这与ADDRESS.COUNTRYID中的数据存储有关吗?由于INNER JOIN起作用,Oracle将ADDRESS.COUNTRYID和COUNTRY.ID视为相同的值。那么为什么同一个键上的LEFT JOIN会因“不存在的LOB值”而失败?

0 个答案:

没有答案