여러분들 덕에 SQL의 많은 부분 도움을 많고 있습니다. ^^

 

with test as(
select 1 A ,'국어책<상>' B from dual union all
select 2   ,'영어수업<중>' from dual union all
select 3   ,'<우주>과학실험시간<상중하>' from dual
)

 

select r.B, substr(r.b, r.fpos  , r.tpos -  r.fpos+1) RESULT,
            substr(r.b, r.fpos1  , r.tpos1 -  r.fpos1+1) RESULT1,
            substr(r.b, r.fpos2  , r.tpos2 -  r.fpos1+1) RESULT2
  from ( select a.* ,  REGEXP_INSTR(B,'<',1,1,0) fpos  , REGEXP_INSTR(B,'>',1,1,0) tpos,
                        REGEXP_INSTR(B,'<',1,2,0) fpos1  , REGEXP_INSTR(B,'>',1,2,0) tpos1,
                        REGEXP_INSTR(B,'<',1,3,0) fpos2  , REGEXP_INSTR(B,'>',1,3,0) tpos2
          from test a ) r
                                                                                                     

                                                               

B

RESULT

RESULT1

RESULT2 

국어책<상> 

 <상> 

 국 

    국

영어수업<중>

  <중>  

  영  

 영  

<우주>과학실험시간<상중하>  

<우주> 

 <상중하>

                                   

이런 결과가 나왔습니다.

2개 이상 <>이 존재할 때는 결과값이 정상적으로 나오는데 1개일 경우만 저런 식으로 나옵니다.

어떤 문제인지 궁금합니다.