2017-12-02 5 views
2

다음과 같이 두 테이블을 결합하려고합니다.Oracle sql 다른 테이블의 필드에 단어가 들어있는 하나의 테이블을 기반으로 테이블을 결합하십시오.

Table A  Table B 
Field1   Field1 
GO    GO 
FOREGO 
OK GO 

나는 전용 테이블 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의 단어를 구문 분석하고 간단한 equijoin을 사용하는 것이 좋습니다 것입니다.