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

ORA-00932:不一致的数据类型:预期数变长

昝唯
2023-03-14

我正在user_views上运行一个查询。“TEXT”列是LONG数据类型的。所以,当我在where子句中使用该列时,我得到了预期的错误。

错误:ORA-00932:不一致的数据类型:预期数过长

查询是

SELECT view_name, text
FROM user_views 
WHERE lower(text) LIKE '%company%'

这个怎么解决?

共有3个答案

夏立果
2023-03-14

请参阅以下链接:

ORA-00932

描述

当您遇到ORA-00932错误时,将出现以下错误消息:

ORA-00932:不一致的数据类型原因

您试图在两个不同的数据类型之间执行操作,但这些数据类型不兼容。

决议

解决此Oracle错误的选项包括:

选项#1

更正操作,使数据类型兼容。您可能需要使用转换函数,例如:to\u DATE函数、to\u NUMBER函数或to\u CHAR函数。有关Oracle功能的完整列表,请访问我们的Oracle功能网页。

此错误的一个示例是,如果您尝试对LONG数据类型使用类似条件。

例如,如果您创建了以下表:

CREATE TABLE suppliers
( supplier_id numeric(10) not null,
  supplier_name long not null,
  contact_name varchar2(50)
);

然后,您尝试在定义为LONG数据类型的supplier_name列上使用类似条件:

SELECT *
FROM suppliers
WHERE supplier_name LIKE 'IBM%';

不幸的是,不能在长数据类型上使用类似条件。

要更正此错误,可以执行以下操作之一:

  • 不要在您的SQL中使用类似条件(针对LONG数据类型字段)。
  • 考虑修改表,使supplier_name字段为VARCHAR2或CHAR字段。
  • 尝试编写自定义PLSQL函数将LONG转换为VARCHAR2。

选项#2

如果您尝试在LONG数据类型上使用Oracle函数,也可能发生此错误。

例如,如果您创建了以下表:

CREATE TABLE suppliers
( supplier_id numeric(10) not null,
  supplier_name long not null,
  contact_name varchar2(50)
);

然后,您尝试在定义为长数据类型的supplier\u name列上使用to\u CHAR函数:

SELECT upper(supplier_name)
FROM suppliers;

您将收到错误消息:

不幸的是,您不能在长数据类型上使用Oracle函数。

要更正此错误,可以执行以下操作之一:

  • 不要在SQL中使用Oracle函数(针对LONG数据类型字段)。
  • 考虑修改表,使supplier_name字段为VARCHAR2或CHAR字段。
  • 尝试编写自定义PLSQL函数将LONG转换为VARCHAR2。
邓建柏
2023-03-14

从用户视图中创建一个表,并从最近创建的新表中查询您的需求。

create table my_tab as
select view_name myview,to_lob(text) mytext from user_views;

然后

select * from my_tab
where mytext like '%company%';

非常感谢。

贾沛
2023-03-14

因为TO_CLOB(长)转换器/构造函数需要物理指针进行存储(可能是4GB…),

这应该适合您(在11gR2上测试):

CREATE TABLE DBO.MY_ALL_VIEWS AS 
SELECT DV.owner, DV.view_name, TO_LOB(DV.text) AS text
FROM ALL_VIEWS DV;

SELECT count(*) 
FROM DBO.MY_ALL_VIEWS 
WHERE REGEXP_LIKE(TEXT,'(company)+','i');
 类似资料:
  • 思维方式 逻辑是,如果订单被取消,则返回0,否则返回欠款-支付价值 小查询 获取错误 ORA-00932:不一致的数据类型:预期的字符数为00932。00000-“不一致的数据类型:预期的%s得到了%s”*原因: *操作:第25行错误列:58

  • 我有这个查询我试图运行,但我一直遇到这个错误。我正在尝试执行一个子句,将数据(BLOB列)与:var2(这是一个blob对象)进行比较。 这是我的密码。 对于为什么我会得到这个错误有什么建议吗? 我正在将与进行比较,这不是很好吗? 谢谢

  • 我在ubuntu 14.04LTS上使用oracle 11g。我有一个名为成员的表,我由以下sql创建, 后来我更新了这个表格, 现在,当我运行“DESC members”时,它会显示结果, 最后,我运行了这样的插入sql, 它显示了错误, 第1行错误:ORA-00932:数据类型不一致:预期数字为二进制 有人能帮我解决问题吗?而且我也不确定在这个过程中我是否可以添加图像或路径的二进制文件。有人能

  • 我正在使用。NET中的Oracle数据访问,我的查询如下 我得到以下错误“ORA-00932:不一致的数据类型:预期的日期得到的数字”

  • 我刚刚将Spring MVC(3.2.8)应用程序从Ant迁移到Maven,所以我没有更改代码,只更改了库,因为会自动导入依赖项。从那时起,我有很多DB错误,例如ORA-00932、trnasaction超时...... 或者举个例子: 或这个: DB是: 这里是进口的hibertante罐。。。