当前位置: 首页 > 知识库问答 >
问题:

ORA-00932(不一致的数据类型:Expected-Get CLOB)错误,我不明白

苏凯
2023-03-14

我从这样一个查询开始:

    SELECT A.*
      FROM TABLE_A A
INNER JOIN TABLE_B B
        ON A.YEAR = B.YEAR
     WHERE A.ID IN (SELECT ID FROM TABLE_B)
    SELECT DISTINCT A.*
      FROM TABLE_A A
INNER JOIN TABLE_B B
        ON A.YEAR = B.YEAR
     WHERE A.ID IN (SELECT ID FROM TABLE_B)

通过将WHERE子句中的条件移动到inner join,我最终更正了查询并消除了重复记录,如下所示:

    SELECT A.*
      FROM TABLE_A A
INNER JOIN TABLE_B B
        ON A.YEAR = B.YEAR
       AND A.ID = B.ID

我只是不明白为什么第二个查询不起作用。为什么在这里添加distinct关键字会突然出现问题?

共有1个答案

赫连俊悟
2023-03-14

这不是一个特别的enlightning错误消息,但这是因为对LOB的限制,其中包括:

>

  • 不能在查询的ORDER BY子句、查询的GROUP BY子句或聚合函数中指定LOB列。

    不能在SELECT中指定LOB列。..区分或选择...唯一语句或在联接中。但是,您可以在select...中指定对象类型列的LOB属性。DISTINCT语句、使用UNION的查询,或者在列的对象类型上定义了MAP或ORDER函数时使用减集运算符。

    SQL> select distinct col from (select to_clob('test') as col from dual);
    
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected - got CLOB
    

    如果只列出非CLOB列,则可以使用distinct,而不是使用a.*,后者包括table_a中的一个CLOB列。

    您可以解决这个问题,但正确的做法是更正查询以消除重复项。必须将distinct添加到查询中,这通常是错误的信号,您正在修复症状而不是原因。

  •  类似资料: