DB
[Oracle 10 to 9] WM_CONCAT 함수 대체 XmlAgg
쑤기c
2014. 7. 16. 09:25
WM_CONCAT은 여러 ','를 토큰으로해서 row값을 1줄로 합쳐준다.
DBMS가 Oracle 10g에서 9i로 대체되어서 WM_CONCAT 함수 미지원 상태가 되었을때 방법,
<참고>
http://www.gurubee.net/article/53637 ▶ XMLAgg 힌트
http://blog.naver.com/webdilh/30120533693 ▶ 상세설명
DBMS가 Oracle 10g에서 9i로 대체되어서 WM_CONCAT 함수 미지원 상태가 되었을때 방법,
TO_CHAR(WM_CONCAT(C.OP_INFO)) --> 결과:'A,B,C,E' 를
SUBSTR(XMLAgg(XMLElement(X, ',') --> 결과: 'A,B,C,,E'
-- 이 경우 값이 NULL인 경우 토큰(,)만 추가되므로 DECODE로 ',,'를 제거하자.
SUBSTR(XMLAgg(XMLElement(X, DECODE(C.OP_INFO, NULL, '', ',')
-- 이렇게 수정하면 WM_CONCAT과 같은 결과 출력
(2017.02.15 추가) SUBSTR(를 빠뜨리면 한글이 깨져서 나오더라..
<참고>
http://www.gurubee.net/article/53637 ▶ XMLAgg 힌트
http://blog.naver.com/webdilh/30120533693 ▶ 상세설명
반응형