문자열 매치 질문 1 2 1,708

by 허승호 [2016.06.27 15:27:37]


안녕하세요. 문자열 매치에 관해 질문이 있습니다.

A,B 두 테이블의 칼럼에는 NO, CONTENT라는 칼럼이 있습니다.

칼럼의 내용은 이렇습니다.

NO

             CONTENT

1

심각해진 만큼 범정부 차원의 위기 대응 체제를 물 샐틈 없이 유지해야 한다"고 당부했다. 박 대통령은 이날 오전 청와대 수석비서관회의를 주재한 자리에서 "금요일(24일) 영국이 EU탈퇴를 선택하면서 세계 금융 시장이 크게 요동치고 있고 또 우리 주식시장과 외환시장에도 파장이 미치고 있다"면서 이같이 밝혔다.그러면서 "시장 상황에 대한 24시간 모니터링과 함께 시장 안정화를 위해 필요한 모든 조치를 시행해서 우리 경제에 미치는 파급이 최소화될 수 있도록 해달라"고 주문했다. 이날 수석회의는 박 대통령이 올들어 6번째로 주재한 회의로 이원종 비서실장 등 두 차례에 걸친 청와대 인사 이후 첫 회의다. 

B 테이블의 칼럼에도 CONTENT칼럼이 존재합니다.

NO

                       CONTENT

1

박근혜 대통령은 27일 "시장상황에 대한 24시간 모니터링과 함께 시장 안정화를 위해 필요한 모든 조치를 시행해 우리 경제에 미치는 파급이 최소화될 수 있도록 해주기를 바란다"고 말했다. 박 대통령은 이날 청와대에서 수석비서관회의를 주재하면서 "우리 경제를 둘러싼 대외여건이 어느때보다도 심각해진만큼 범정부 차원의 위기대응 체제를 물샐틈 없이 유지해야 하겠다"면서 이같이 말했다. 박 대통령은 "지난 금요일 영국이 유럽연합(EU) 탈퇴를 선택하면서 세계 금융시장이 크게 요동치고 있고, 우리 주식시장과 외환시장에도 파장이 미치고 있다"면서 "국제 금융시장의 불확실성은 더 커지고, 글로벌 교역이 위축될 우려도 있다. 글로벌 금융시장의 불확실성이 증대함에 따라서 신흥시장에서의 자금 이탈현상도 예상이 된다"고 말했다. 

질문은 아래와같습니다.

두개의 테이블을 비교하여 같은 문자열이 있는지 확인하여 4~5단어만 매치하는 결과만 나오면 됩니다.

즉 결과는 아래처럼 나와야 합니다.

가시적으로 보기 쉽게 위 테이블의 내용과 아래 결과물을 색상으로 칠해놓았습니다.

NO MATCH_WORDS MATCH_COUNT_WORDS
1 대한 24시간 모니터링과 함께 시장 5
2 안정화를 위해 필요한 모든 조치를 5
3 경제에 미치는 파급이 최소화될 수 5
4 우리 주식시장과 외환시장에도 파장이 미치고 5

검색기준을 A테이블에 두고 B의 단어들을 매치한 결과 입니다.

감사합니다.

by 마농 [2016.06.27 16:54:37]
WITH a AS
(
SELECT 1 no, '심각해진 만큼 범정부 차원의 위기 대응 체제를 물 샐틈 없이 유지해야 한다"고 당부했다. 박 대통령은 이날 오전 청와대 수석비서관회의를 주재한 자리에서 "금요일(24일) 영국이 EU탈퇴를 선택하면서 세계 금융 시장이 크게 요동치고 있고 또 우리 주식시장과 외환시장에도 파장이 미치고 있다"면서 이같이 밝혔다.그러면서 "시장 상황에 대한 24시간 모니터링과 함께 시장 안정화를 위해 필요한 모든 조치를 시행해서 우리 경제에 미치는 파급이 최소화될 수 있도록 해달라"고 주문했다. 이날 수석회의는 박 대통령이 올들어 6번째로 주재한 회의로 이원종 비서실장 등 두 차례에 걸친 청와대 인사 이후 첫 회의다.' content FROM dual
)
, b AS
(
SELECT 1 no, '박근혜 대통령은 27일 "시장상황에 대한 24시간 모니터링과 함께 시장 안정화를 위해 필요한 모든 조치를 시행해 우리 경제에 미치는 파급이 최소화될 수 있도록 해주기를 바란다"고 말했다. 박 대통령은 이날 청와대에서 수석비서관회의를 주재하면서 "우리 경제를 둘러싼 대외여건이 어느때보다도 심각해진만큼 범정부 차원의 위기대응 체제를 물샐틈 없이 유지해야 하겠다"면서 이같이 말했다. 박 대통령은 "지난 금요일 영국이 유럽연합(EU) 탈퇴를 선택하면서 세계 금융시장이 크게 요동치고 있고, 우리 주식시장과 외환시장에도 파장이 미치고 있다"면서 "국제 금융시장의 불확실성은 더 커지고, 글로벌 교역이 위축될 우려도 있다. 글로벌 금융시장의 불확실성이 증대함에 따라서 신흥시장에서의 자금 이탈현상도 예상이 된다"고 말했다.' content FROM dual
)
SELECT ROWNUM no
     , match_words
     , REGEXP_COUNT(match_words, ' ') + 1 match_count_words
  FROM (SELECT b.lv
             , CASE WHEN INSTR(' '||a.content||' ', ' '||b.x5||' ') > 0
                    THEN b.x5 ELSE b.x4 END match_words
             , MOD(ROW_NUMBER() OVER(PARTITION BY b.lv - ROWNUM ORDER BY b.lv), 5) flag
          FROM (SELECT lv
                     , SUBSTR(content, INSTR( ' '||content, ' ', 1, lv)
                                     , INSTR(content||'  ', ' ', 1, lv+4)
                                     - INSTR( ' '||content, ' ', 1, lv)
                                     ) x5
                     , SUBSTR(content, INSTR( ' '||content, ' ', 1, lv)
                                     , INSTR(content||'  ', ' ', 1, lv+3)
                                     - INSTR( ' '||content, ' ', 1, lv)
                                     ) x4
                  FROM b
                     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 999)
                 WHERE lv <= REGEXP_COUNT(content, ' ')-2
                ) b
             , a
         WHERE INSTR(' '||a.content||' ', ' '||b.x5||' ') > 0
            OR INSTR(' '||a.content||' ', ' '||b.x4||' ') > 0
        )
  WHERE flag = 1
;

 


by 허승호 [2016.06.27 18:07:59]

마농님의 응용력에 그저 감탄사가 절로 나오는 군요.... 최고입니다.!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입