如何在 blob 列上连接 oracle 中的两个表
执行此查询时出现“SQL 命令未正确结束”错误消息
select name,photo
from tbl1 join tbl2 on tbl1.photo = tbl2.photo
首先,将相同内容存储在两个不同的表中的设计似乎非常奇怪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
从性能的角度来看,这将是相当可怕的。您必须将每个photo
fromtbl1
与每个photo
from进行比较,tbl2
并且比较两个 lob 并不是特别快。如果您真的打算比较图像,您最好计算一个哈希,将其存储在一个单独的索引列中,然后比较哈希而不是直接比较图像。
编码:
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 blob
和tbl2's blob
image_id
3. ...然后在命名为 image_idJOIN
的基础上执行COLUMN
注意:您不能对数据类型执行GROUP BY, JOIN(any JOIN), CONCAT
操作BLOB
建议:将图像的路径保存在数据库中并将图像保存在该服务器目录中的某个位置(因为将图像保存在数据库中的 BLOB 中不是一个好习惯......为了确保我所说的访问这里)