blob列でOracleの2つのテーブルを結合する方法
このクエリを実行すると、「SQL コマンドが正しく終了していません」というエラー メッセージが表示される
select name,photo
from tbl1 join tbl2 on tbl1.photo = tbl2.photo
まず、同じものblob
を 2 つの異なるテーブルに格納する設計は非常に奇妙に思えますが、画像を結合するのは非常に奇妙に思えます。まともな設計とは思えません。
これは Oracle 8i 用にタグ付けされています。これは、SQL 99 結合構文をサポートしていない古いバージョンの Oracle です。where
代わりに句で結合を行う必要があります。blob
2 つの値が等しいかどうかを直接テストすることはできません。しかし、あなたは使うことができますdbms_lob.compare
select name,photo
from tbl1,
tbl2
where dbms_lob.compare(tbl1.photo, tbl2.photo) = 0
これは、パフォーマンスの観点からはかなり厄介です。すべてphoto
の fromtbl1
をすべてのphoto
fromtbl2
と比較する必要があり、2 つの LOB を比較するのは特に迅速ではありません。画像を比較することに真剣に取り組んでいる場合は、画像を直接比較するよりも、ハッシュを計算し、それをインデックス付きの別の列に格納してから、ハッシュを比較する方がよいでしょう。