1

blob列でOracleの2つのテーブルを結合する方法

このクエリを実行すると、「SQL コマンドが正しく終了していません」というエラー メッセージが表示される

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

2 に答える 2

2

まず、同じものblobを 2 つの異なるテーブルに格納する設計は非常に奇妙に思えますが、画像を結合するのは非常に奇妙に思えます。まともな設計とは思えません。

これは Oracle 8i 用にタグ付けされています。これは、SQL 99 結合構文をサポートしていない古いバージョンの Oracle です。where代わりに句で結合を行う必要があります。blob2 つの値が等しいかどうかを直接テストすることはできません。しかし、あなたは使うことができますdbms_lob.compare

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

これは、パフォーマンスの観点からはかなり厄介です。すべてphotoの fromtbl1をすべてのphotofromtbl2と比較する必要があり、2 つの LOB を比較するのは特に迅速ではありません。画像を比較することに真剣に取り組んでいる場合は、画像を直接比較するよりも、ハッシュを計算し、それをインデックス付きの別の列に格納してから、ハッシュを比較する方がよいでしょう。

于 2016-03-13T10:24:05.933 に答える