독서하는 개발자's Blog

반응형

계층적 쿼리 SYS_CONNECT_BY_PATH

 

아래는 이 쿼리의 문법이다.

 

SYS_CONNECT_BY_PATH(column, char)

SYS_CONNECT_BY_PATH에 대한 설명을 봅시다.

 

SYS_CONNECT_BY_PATH는 계층적 쿼리에서만 유효하다.
CONNECT BY 조건에 의해 리턴 된 각 행에 대해 char 값으로 분리 된 컬럼 값을 루트에서 노드로 컬럼의 값의 경로를 리턴한다.
column과 char는 모드 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형 중 하나여야 하며, 반환 된 문자열은 VARCHAR2 데이터 유형이고 column과 동일한 문자 집합이다.

 

위에 설명은 말 그대로 column은 계층 쿼리로 쓸 컬럼, char는 계층을 구분할 구분자가 들어가는 부분.

문자형식 받고 반환해주는 특징


예제를 보며 확인해보자

* 예제

SELECT LPAD(' ', 2*level-1)||SYS_CONNECT_BY_PATH(last_name, '/') "Path"
   FROM employees
   START WITH last_name = 'Kochhar'
   CONNECT BY PRIOR employee_id = manager_id;

Path
-------------------결 과 부 분----------------------------
 /Kochhar
   /Kochhar/Greenberg
     /Kochhar/Greenberg/Faviet
     /Kochhar/Greenberg/Chen
     /Kochhar/Greenberg/Sciarra
     /Kochhar/Greenberg/Urman
     /Kochhar/Greenberg/Popp
   /Kochhar/Whalen
   /Kochhar/Mavris
   /Kochhar/Baer
   /Kochhar/Higgins
     /Kochhar/Higgins/Gietz

첫번째줄 select를 보면 SYS_CONNECT_BY_PATH(last_name, '/')이 쓰인 것을 볼 수 있다.

last_name을 계층으로 사용할 것이고, '/' 로 구분한다.

 

계층으로 나누는 것은 3번째 줄에 있는 START WITH CONNECT BY PRIOR에 의해서 나눠지고

그 값들을 SYS_CONNECT_BY_PATH에서 구분하는 것.

 

SYS_CONNECT_BY_PATH에 관한 링크 정리

 

https://docu94.tistory.com/70

 

[Oracle] 계층구조 쿼리란? (Hierarchical Queries)

계층적 쿼리 (Hierarchical Queries) START WITH ~ CONNECT BY 계층 쿼리를 사용하는 예) 회사에서 개발팀, 기획팀이 있다고 하면 개발팀에는 개발 1팀, 개발 2팀 / 기획팀에는 기획 1팀, 기획 2팀과 같이 하위..

docu94.tistory.com

 


ORACLE 참고 링크

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions164.htm

 

SYS_CONNECT_BY_PATH

SYS_CONNECT_BY_PATH Syntax Description of the illustration sys_connect_by_path.gif Purpose SYS_CONNECT_BY_PATH is valid only in hierarchical queries. It returns the path of a column value from root to node, with column values separated by char for each row

docs.oracle.com

도움이 되셨으면 공감과 광고 한번 씩 눌러주시면 감사합니다!!

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band