Skip to content

SQL WM CONCAT,XMLAgg #
Find similar titles

문자열 연결 기능 Oracle 함수 #

  • 여러 행(ROW)을 하나의 컬럼(COLUMN)으로 합치는 함수이다. 다수의 데이터를 하나의 컬럼으로 구분자를 통해 한 행으로 표현해 줄 수 있는 기능이다. 버젼에 따라 함수에 쓰임이 달라질 수 있다.

문자열 연결 기능 함수 종류 #

  • LISTAGG(Oracle11g ver)
  • WM_CONCAT(Oracle10g ver)
  • XMLAgg(Oracle9g ver)

WM_CONCAT #

  • 문자열 연결 기능 Oracle 함수 중 Oracle10g ver. 부터 사용하는 함수이다. 구분자는 자동으로 쉼표(,)를 사용하여 다수의 데이터를 하나의 행으로 가져 올 수 있다.

WM_CONCAT 사용법 #

SELECT WM_COCNAT(컬럼명)
FROM DUAL

WM_CONCAT 예제 #

SELECT USER_NM AS userNm
FROM DUAL

userNm = (박지성
          손흥민
          안정환) 여러 행의 데이터로 표현

SELECT WM_CONCAT(USER_NM) AS userNm
FROM DUAL
GROUP  BY userNm

userNm = 박지성,손흥민,안정환 -  단일 데이터로 표현

XMLAgg,xmlelement #

  • 문자열 연결 기능 Oracle 함수 중 Oracle9g ver. 부터 사용하는 함수이다. 구분자는 사용자가 임의로 선택할수 있으며 xmlelemnet 함수와 함께 이용하여 다수의 데이터를 하나의 행으로 가져 올 수 있다. 하지만 WM_CONCAT,LISTAGG 기능에 비하여 복잡하고 성능이 떨어져 잘 사용되지는 않는다.

XMLAgg 사용법 #

SUBSTR(XMLAGG(XMLELEMENT(태그명 ,'.', 컬럼명) ORDER BY 컬럼명).EXTRACT('//text()'), 2) 컬럼명

XMLAgg 예제 #

SELECT USER_NM AS userNm
FROM DUAL

userNm = (박지성
          손흥민
          안정환) 여러 행의 데이터로 표현

SELECT SUBSTR(XMLAgg(xmelement(A,USER_NM) ORDER BY
USER_NM).EXTRACT('//text()')),2) AS userNm
FROM DUAL
GROUP  BY userNm

userNm = 박지성,손흥민,안정환 -  단일 데이터로 표현

SUBSTR => 맨 앞에 들어가는 구분자(,)를 지워준다.
xmelement(A,B) => A는 태그명이며 B는 태그내의 값이다. 값을 태그로 묶어서 표현하    게 된다. 
extract => 태그를 뺀 값을 가져온다.
0.0.1_20140628_0