ORA-00932:不一致的数据类型:预期 - 得到 BLOB

问题描述 投票:0回答:1

我已经编写了此 SQL,但收到以下错误:

ORA-00932:数据类型不一致:预期 - 得到 BLOB

这是 SQL :

SELECT DISTINCT
file_name,
JPEG_IMG
table_repo
WHERE
file_name = 'K1A98'
AND JPEG_IMG is not NULL;
sql oracle oracle11g
1个回答
0
投票

如果您发布测试用例,将会有所帮助。


示例表:请注意,它有一个主键列。

SQL> create table test
  2    (id        number primary key,
  3     file_name varchar2(20),
  4     jpeg_img  blob
  5    );

Table created.

与您的查询类似的查询,即选择文件名和 image(BLOB 列的内容)不起作用,正如您所知:

SQL> select distinct
  2    file_name, jpeg_img
  3  from test;
  file_name, jpeg_img
             *
ERROR at line 2:
ORA-00932: inconsistent datatypes: expected - got BLOB

但是,如果您包含主键,它就可以工作:

SQL> select distinct
  2    id, file_name, jpeg_img
  3  from test;

no rows selected

当然,这没有多大意义,因为主键无论如何都必须是唯一的,所以 - 如果您应用这样的代码 - 您将从表中获取所有行。

另一种选择是计算 BLOB 列的长度(如果这对您来说足够好):

SQL> select distinct
  2    file_name, dbms_lob.getlength(jpeg_img) jpeg
  3  from test;

no rows selected

更好的选择是计算哈希

SQL> select distinct
  2    file_name, dbms_crypto.hash(jpeg_img, 2) jpeg
  3  from test;

no rows selected

SQL>

(当然,在我的示例中没有选择任何内容,因为

test
表为空;您应该会得到一些结果)。

© www.soinside.com 2019 - 2024. All rights reserved.