2017-12-02 10 views
2

次のように2つのテーブルを結合しようとしています。Oracle sql別のテーブルのフィールドに単語を含む1つのテーブルに基づいてテーブルを結合

テーブルAのフィールド1がテーブルBの単語として正確な単語を持つ場所に参加したいだけですが、別の単語の一部ではありません。だから、GOとOK GOはうまく参加することができます。FOREGOは参加できません。

私はreg_expを使って結合を達成しようとしていますが、実装方法を理解できません。

答えて

0

私はreg_expを使用して結合を達成することができますが、実装方法を理解できません。

あなたはREGEXP_LIKE使用することができます

SELECT DISTINCT A.* 
FROM TableA A 
JOIN TAbleB B 
ON regexp_like(A.Field1, '(|^)('|| B.Field1|| ')(|$)'); 

DBFiddle Demo

+1

それは魅力的に機能しました!どうもありがとうございます! – user3399935

0

を単語がスペースで囲まれていると仮定すると、あなたが行うことができます:

select a.* 
from a join 
    b 
    on ' ' || a.field1 || ' ' like '% ' || b.field1 || ' %'; 

この方法もバージョンどちらをregexp_substr()を使用しています非常に良いパフォーマンスをしてください。私はあなたがテーブルbからの単語を別のテーブルに解析し、単純な等価円を使用することをお勧めします。

関連する問題