如何在blob列上的oracle中连接两个表
执行此查询时“SQL命令未正确结束”错误消息出现
select name,photo
from tbl1 join tbl2 on tbl1.photo = tbl2.photo
答案 0 :(得分:2)
首先,有一个设计,你将相同的blob
存储在两个不同的表中并且非常奇怪,你想要加入一个图像,这似乎是非常奇怪的。这似乎不是一个明智的设计。
您已为Oracle 8i标记了此内容。这是Oracle的一个古老版本,它不支持SQL 99连接语法。您需要在where
子句中进行连接。您无法直接测试两个blob
值之间的相等性。但您可以使用dbms_lob.compare
select name,photo
from tbl1,
tbl2
where dbms_lob.compare(tbl1.photo, tbl2.photo) = 0
从性能角度来看,这将是相当可怕的。您必须将photo
中的每个tbl1
与photo
中的每个tbl2
进行比较,并且比较两个龙头并不是特别快。如果您真的想要比较图像,那么最好计算一个哈希值,将其存储在索引的单独列中,然后比较哈希值而不是直接比较图像。
答案 1 :(得分:0)
代码:
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 blob
和tbl2's blob
到image_id
3。 ...然后根据名为image_id的JOIN
执行COLUMN
注意:您无法对GROUP BY, JOIN(any JOIN), CONCAT
数据类型
BLOB
次操作
建议:将路径保存到数据库中的图像并将图像保存在该服务器目录的某处(因为在数据库中保存BLOB中的图像不是一个好习惯... ..为了确保我所说的VISIT HERE)