A라는 테이블에는 문장들이 들어있습니다.
ID | 문장
------------------------------
1 | 희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.
2 | 우연이 아닌 선택이 운명을 결정한다
3 | 그대의 하루하루를 그대의 마지막 날이라고 생각하라.
B라는 테이블에는 검색 키워드가 있습니다.
키워드
-------------------------------
희망
운명
우연
이렇게 구성되어 있다고 할 때 B 테이블에 존재하는 모든 키워드로 A 테이블의 문장을 조회해서
희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.
우연이 아닌 선택이 운명을 결정한다.
이렇게 결과가 나오게끔 하려고 합니다.
한 문장안에 두개 이상의 키워드가 들어있어도 문장은 한번만 나와야 하구요.
그래서 아래와 같이 select 했는데 서브쿼리가 하나 이상 리턴한다고 에러가 발생합니다.
select ID, 문장
from TABLE_A
where 문장 LIKE (select 키워드 from TABLE_B);
WITH A AS( SELECT 1 AS ID ,'희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.' AS CONTEXT FROM DUAL UNION ALL SELECT 2 ,'우연이 아닌 선택이 운명을 결정한다' AS CONTEXT FROM DUAL UNION ALL SELECT 3 ,'그대의 하루하루를 그대의 마지막 날이라고 생각하라.' AS CONTEXT FROM DUAL ) ,B AS( SELECT '희망' WORD FROM DUAL UNION ALL SELECT '우연' FROM DUAL UNION ALL SELECT '운명' FROM DUAL ) SELECT * FROM A WHERE ID IN (SELECT DISTINCT (SELECT ID FROM A WHERE REGEXP_LIKE(A.CONTEXT , B.WORD )) AS ID FROM B)