1

如何在 blob 列上连接 oracle 中的两个表

执行此查询时出现“SQL 命令未正确结束”错误消息

select name,photo 
from tbl1 join tbl2 on tbl1.photo = tbl2.photo
4

2 回答 2

2

首先,将相同内容存储在两个不同的表中的设计似乎非常奇怪blob,而且您想要加入图像非常奇怪。这似乎不是一个明智的设计。

您已经为 Oracle 8i 标记了这个。那是不支持 SQL 99 连接语法的 Oracle 的古老版本。您需要改为在where子句中加入。您不能直接测试两个blob值之间的相等性。但是你可以使用dbms_lob.compare

select name,photo 
  from tbl1,
       tbl2 
 where dbms_lob.compare(tbl1.photo, tbl2.photo) = 0

从性能的角度来看,这将是相当可怕的。您必须将每个photofromtbl1与每个photofrom进行比较,tbl2并且比较两个 lob 并不是特别快。如果您真的打算比较图像,您最好计算一个哈希,将其存储在一个单独的索引列中,然后比较哈希而不是直接比较图像。

于 2016-03-13T10:24:05.933 回答
0

编码:

SELECT 
    name, photo
FROM 
    tbl1 T1
INNER JOIN 
    tbl2 T2
ON
    T1.photo = T2.photo


如果运行不正常,则必须对 TABLE 结构进行一些更改:
1. ...添加一个TABLE名为 IMAGES 的具有列 (image_id, image_blob) 的新名称
2. ...然后您必须更改: tbl1's blobtbl2's blobimage_id
3. ...然后在命名为 image_idJOIN的基础上执行COLUMN


注意:您不能对数据类型执行GROUP BY, JOIN(any JOIN), CONCAT操作BLOB


建议:将图像的路径保存在数据库中并将图像保存在该服务器目录中的某个位置(因为将图像保存在数据库中的 BLOB 中不是一个好习惯......为了确保我所说的访问这里

于 2016-03-13T08:00:07.243 回答