首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00932:不一致的数据类型:预期获得的CLOB

ORA-00932:不一致的数据类型:预期获得的CLOB
EN

Stack Overflow用户
提问于 2012-10-20 02:10:56
回答 7查看 301.1K关注 0票数 75

考虑到TEST_SCRIPT是一个CLOB,所以当我在Oracle上从SQL*PLUS运行这个简单的查询时,我得到以下错误:

代码语言:javascript
复制
ORA-00932: inconsistent datatypes: expected - got CLOB

我已经阅读了很多关于同一错误的问题,但这些问题都没有运行来自SQLPLUS的直接查询

代码语言:javascript
复制
    UPDATE IMS_TEST 
       SET TEST_Category  = 'just testing'  
     WHERE TEST_SCRIPT    = 'something'
       AND ID             = '10000239' 

完整示例:

代码语言:javascript
复制
SQL> create table ims_test(
  2  test_category varchar2(30),
  3  test_script clob,
  4  id varchar2(30)
  5  );

Table created.

SQL> insert into ims_test values ('test1','something','10000239');

1 row created.

SQL> UPDATE IMS_TEST
  2  SET TEST_Category  = 'just testing'
  3  WHERE TEST_SCRIPT    = 'something'
  4  AND ID             = '10000239';
WHERE TEST_SCRIPT    = 'something'
      *
ERROR at line 3:
ORA-00932: inconsistent datatypes: expected - got CLOB
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-10-20 02:46:41

不能将CLOB放在WHERE子句中。从documentation

比较条件中不支持

大型对象(LOB)。但是,您可以使用PL/SQL程序对CLOB数据进行比较。

如果您的值始终小于4k,则可以使用:

代码语言:javascript
复制
UPDATE IMS_TEST 
   SET TEST_Category           = 'just testing'  
 WHERE to_char(TEST_SCRIPT)    = 'something'
   AND ID                      = '10000239';

无论如何,通过CLOB进行搜索是很奇怪的。你能不能不要只按ID栏搜索?

票数 74
EN

Stack Overflow用户

发布于 2015-11-20 20:54:53

执行SELECT DISTINCT ..., <CLOB_column>, ...时也会出现相同的错误。

如果此CLOB列在所有适用行中包含的VARCHAR2值小于limit,则可以使用to_char(<CLOB_column>)或连接多个DBMS_LOB.SUBSTR(<CLOB_column>, ...)调用的结果。

票数 43
EN

Stack Overflow用户

发布于 2015-06-25 03:38:35

获取CLOB的子字符串,然后将其转换为char:

代码语言:javascript
复制
UPDATE IMS_TEST 
  SET TEST_Category           = 'just testing' 
WHERE to_char(substr(TEST_SCRIPT, 1, 9))    = 'something'
  AND ID                      = '10000239';
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12980038

复制
相关文章

相似问题

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