首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-00932 (不一致的数据类型:预期-获取CLOB)错误,我不理解。

ORA-00932 (不一致的数据类型:预期-获取CLOB)错误,我不理解。
EN

Stack Overflow用户
提问于 2017-04-26 14:44:09
回答 2查看 19.6K关注 0票数 6

我从这样一个查询开始:

代码语言:javascript
运行
复制
    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)

上面的查询给我提供了重复的记录,因此我添加了DISTINCT关键字如下:

代码语言:javascript
运行
复制
    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)

第二个查询给出了以下错误:

ORA-00932:不一致的数据类型:预期- got CLOB

  1. 00000 -“不一致的数据类型:预期%s获得%s”

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

代码语言:javascript
运行
复制
    SELECT A.*
      FROM TABLE_A A
INNER JOIN TABLE_B B
        ON A.YEAR = B.YEAR
       AND A.ID = B.ID

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

EN

Stack Overflow用户

回答已采纳

发布于 2017-04-26 15:03:35

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

  • 不能在查询的ORDER子句、查询的GROUP BY子句或聚合函数中指定LOB列。
  • 不能在选择中指定LOB列.区分或选择..。唯一语句或在联接中。但是,可以在SELECT中指定对象类型列的LOB属性.DISTINCT语句,使用UNION的查询,如果列的对象类型有定义的映射或ORDER函数,则使用减号set运算符。

你正在敲击第二个,但第一个也不时出现在这里。

你可以用这样的方法来假装同样的情况:

代码语言:javascript
运行
复制
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添加到查询中通常是某种错误的迹象,而且您正在修复症状,而不是原因。

票数 11
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43637438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档