Oracle XE 11。一个非常简单的连接查询给了我以下错误:
ORA-00932: inconsistent datatypes: expected - got CLOB
表:
Product
----------------------------------
id, name, description, categoryId
Catetory
------------------
id, name
产品描述为CLOB。
SQL
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
NAME NOT NULL VARCHAR2(30 CHAR)
CATEGORYID NUMBER(19)
DESCRIPTION CLOB
SQL
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
NAME NOT NULL VARCHAR2(30 CHAR)
查询:
SELECT DISTINCT t1.ID, t1.DESCRIPTION, t1.NAME, t0.name FROM Product t1
LEFT OUTER JOIN Category t0 ON (t0.ID = t1.categoryId);
第1行的错误:ORA-00932:数据类型不一致:预期-得到CLOB
如果我删除t0。从选择名称,它将工作。奇怪的
SELECT DISTINCT t1.ID, t1.DESCRIPTION, t1.NAME FROM Product t1
LEFT OUTER JOIN Category t0 ON (t0.ID = t1.categoryId);
谢谢。
正如@dcieslak已经指出的,DISTINCT关键字不能用于CLOB数据类型。
如果我删除t0。从选择名称,它将工作。奇怪的
我想产品上有一个唯一的索引。id列。当您删除t0时。名称fromSELECT
子句,所有选定列都来自同一个表。因此,当其中一列具有唯一值时(在您的示例中为t1.id),则所有行始终是唯一的。这意味着不需要对CLOB列进行任何比较。
但是如果Product.id
上有唯一索引,那么您根本不需要DISTINCT
关键字。对于查询:
SELECT t1.ID, t1.DESCRIPTION, t1.NAME, t0.name FROM Product t1
LEFT OUTER JOIN Category t0 ON (t0.ID = t1.categoryId);
您将从Products
表中的每一行获得一行,由于t1. ID
值不同,因此必须是不同的。
如果clob列包含的字符不超过4000个,可以尝试此操作。。
SELECT DISTINCT t1.ID, to_char(t1.DESCRIPTION), t1.NAME FROM Product t1
LEFT OUTER JOIN Category t0 ON (t0.ID = t1.categoryId);
DISTINCT关键字不能用于CLOB数据类型。解决方法是:
SELECT a.*
, b.clob
FROM (SELECT DISTINCT
... /* columns list wihtout clob columns */
FROM ...
) a
JOIN
table_with_clobs b
ON ...
转到您的示例,它将是:
SELECT Po.ID, Po.DESCRIPTION, Po.NAME, PC.CatName
FROM
( SELECT DISTINCT t1.ID, t0.name CatName
FROM Product t1
LEFT OUTER JOIN Category t0
ON t0.ID = t1.categoryId
) PC
join Product PO
on PO.ID = PC.ID
我正在user_views上运行一个查询。“TEXT”列是LONG数据类型的。所以,当我在where子句中使用该列时,我得到了预期的错误。 错误:ORA-00932:不一致的数据类型:预期数过长 查询是 这个怎么解决?
思维方式 逻辑是,如果订单被取消,则返回0,否则返回欠款-支付价值 小查询 获取错误 ORA-00932:不一致的数据类型:预期的字符数为00932。00000-“不一致的数据类型:预期的%s得到了%s”*原因: *操作:第25行错误列:58
我有这个查询我试图运行,但我一直遇到这个错误。我正在尝试执行一个子句,将数据(BLOB列)与:var2(这是一个blob对象)进行比较。 这是我的密码。 对于为什么我会得到这个错误有什么建议吗? 我正在将与进行比较,这不是很好吗? 谢谢
我正在使用。NET中的Oracle数据访问,我的查询如下 我得到以下错误“ORA-00932:不一致的数据类型:预期的日期得到的数字”
我将非常感谢对这个例外的帮助。 我对这个错误做了一些研究,但找不到解决方法。我将JPA与hibernate一起使用,并在执行查询时得到这个错误。 显然,关于java LocalDate和oracle Date有一些我不理解的地方。:( 这就是目标: java.sql.SqlSyntaxerRoreXception:ORA-00932:不一致的数据类型:预期的日期已获取二进制 非常感谢提前给你的提示