如何在 blob 列上加入 oracle 中的两个表?

how to join two tables in oracle on blob column?

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

执行此查询时"SQL command not properly ended"出现错误消息

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

代码:

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


如果不 运行 好,你将不得不在你的 TABLE 结构中做一些改变:
1. ...添加一个名为 IMAGES 的新 TABLE 具有列 (image_id, image_blob)
2. ...然后你必须改变: tbl1's blobtbl2's blob 到 image_id
3. ...然后在COLUMN的基础上执行JOIN命名为image_id


注意: 您不能对 BLOB 数据类型

执行 GROUP BY, JOIN(any JOIN), CONCAT 操作

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

首先,在两个不同的表中存储相同 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

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