SYS_CONNECT_BY_PATH 값을 Split 하는 방법 없을까요? 0 1 4,094

by 토템 [SQL Query] SYS_CONNECT_BY_PATH split [2013.12.17 16:49:05]



현재 아래와 같은 형태의 쿼리를 사용중입니다.


                         
SELECT LEVEL 
       LV, 
       TOP_MENU_NO, 
       TOP_MENU_NM, 
       SYS_CONNECT_BY_PATH(TOP_MENU_NO, '|') AS MENU_NO_PATH, 
       SYS_CONNECT_BY_PATH(TOP_MENU_NM, '|') AS MENU_NM_PATH
  FROM TABLE_MENU START WITH UP_MENU_NO = 0 CONNECT BY UP_MENU_NO = PRIOR TOP_MENU_NO;


실행 결과물...

3    11    메뉴명    |1|2|11    |TOP1|SUB1|SUBSUB1





트리 구조의  메뉴를 나타내 주는 쿼리입니다.

그런데...

MENU_NO_PATH 와 MENU_NM_PATH 를~

옆으로 펼쳐서 단계별로 나눠서 출력 하고자 합니다.


3 11 메뉴명 |1|2|11 |TOP1|SUB1|SUBSUB1        1    2     11    TOP1    SUB1    SUBSUB1


위처럼 SPLIT 해서 컬럼으로 나누어서 단계별로 출력하고자 합니다.

어떻게 해야 SYS_CONNECT_BY_PATH  결과 값을 하나 하나 나눌수 있을까요 ? ㅠ.ㅠ

조언 부탁 드립니다.


by 우리집아찌 [2013.12.17 16:59:24]
 
WITH T AS (
SELECT '3 11 메뉴명 |1|2|11 |TOP1|SUB1|SUBSUB1    1  2   11  TOP1  SUB1  SUBSUB1' TXT FROM DUAL
)

SELECT REGEXP_SUBSTR(TXT,'[^|]+' , 1 , 1 ) 
   ,REGEXP_SUBSTR(TXT,'[^|]+' , 1 , 2 ) 
   ,REGEXP_SUBSTR(TXT,'[^|]+' , 1 , 3 ) 
   ,REGEXP_SUBSTR(TXT,'[^|]+' , 1 , 4 ) 
 FROM T
 
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입