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

use*_*672 7 sql oracle

我在user_views上运行查询."TEXT"列为LONG数据类型.所以,当我在where子句中使用此列时,我收到了预期的错误.

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

而查询是

SELECT view_name, text
FROM user_views 
WHERE lower(text) LIKE '%company%'
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

Fr_*_*ien 2

请参考以下链接:

ORA-00932

描述

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

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

您尝试在两种不同的数据类型之间执行操作,但数据类型不兼容。

解决

解决此 Oracle 错误的选项是:

选项1

更正操作以使数据类型兼容。您可能需要使用转换函数,例如:TO_DATE 函数、TO_NUMBER 函数或 TO_CHAR 函数。有关 Oracle 函数的完整列表,请访问我们的 Oracle 函数网页。

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

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

CREATE TABLE suppliers
( supplier_id numeric(10) not null,
  supplier_name long not null,
  contact_name varchar2(50)
);
Run Code Online (Sandbox Code Playgroud)

然后您尝试对定义为 LONG 数据类型的 seller_name 列使用 LIKE 条件:

SELECT *
FROM suppliers
WHERE supplier_name LIKE 'IBM%';
Run Code Online (Sandbox Code Playgroud)

不幸的是,您不能对 LONG 数据类型使用 LIKE 条件。

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

  • 不要在 SQL 中使用 LIKE 条件(针对 LONG 数据类型字段)。
  • 考虑修改您的表,使 seller_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)
);
Run Code Online (Sandbox Code Playgroud)

然后您尝试在定义为 LONG 数据类型的 seller_name 列上使用 TO_CHAR 函数:

SELECT upper(supplier_name)
FROM suppliers;
Run Code Online (Sandbox Code Playgroud)

您将收到错误消息:

不幸的是,您不能对 LONG 数据类型使用 Oracle 函数。

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

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