반응형
트리구조, 뎁스구조에서 Full Path를 추출하는 쿼리를 오라클에서는
CONNECT BY를 사용하여 조회 할 수 있다.
SELECT
TC2.CD
,TC2.UP_CD
,TC2.CD_NM
,LTRIM (SYS_CONNECT_BY_PATH (TC2.CD_NM, '>'), '>') AS CD_NM_FULL
FROM TB_CODE TC2
--START WITH TC2.CD = 'AB'
START WITH TC2.CD IN('AA','AB','AC')
CONNECT BY PRIOR TC2.CD = TC2.UP_CD
추가로, 고객사 요건으로 기존에 Full Path경로를 따로 담는 컬럼에 대해 추가 요청이 들어왔을때
기존에 등록되어 있는 데이터를 통해 Full Path값을 업데이트 해주는 쿼리는 아래와 같다.
UPDATE TB_CODE TT
SET
CD_NM_FULL = (
SELECT
V.CD_NM_FULL
FROM (
SELECT
TC2.CD
,TC2.UP_CD
,TC2.CD_NM
,LTRIM (SYS_CONNECT_BY_PATH (TC2.CD_NM, '>'), '>') AS CD_NM_FULL
FROM TB_CODE TC2
--START WITH TC2.CD = 'AB'
--START WITH TC2.CD IN(SELECT SUBSTR(CD,0,2) AS CD FROM TB_CODE GROUP BY SUBSTR(CD,0,2))
START WITH TC2.CD IN('AA','AB','AC')
CONNECT BY PRIOR TC2.CD=TC2.UP_CD
)V
WHERE V.CD = TT.CD
)
START WITH 비교 하는 절 IN절 안에 서브쿼리를 통해 한번에 update를 시도 하니 쿼리도 쿼리고, 데이터량이 많다면
매우 느려지기 때문에 실제 문자열값을 세팅해주는걸 권장한다.
반응형
'DB > Oracle' 카테고리의 다른 글
Split처럼 특정 구분자를 기준으로 열에서 행으로 변환 (Oracle) (1) | 2020.07.27 |
---|---|
ORA-12953 (0) | 2020.06.10 |
Like검색할때 Text Index 생성시 유의사항 (0) | 2020.01.29 |
여러 행의 데이터를 하나의 컬럼데이터로 표현(LISTAGG,XMLAGG) (0) | 2020.01.29 |
HTML 태그 제거 정규식 (0) | 2020.01.29 |