[MSSQL] STUFF와 FOR XML PATH를 활용한 문자열 합치기

MSSQL에서 문자열을 합치는 방법은 여러가지가 있습니다. 이번 포스팅에서는 테이블을 Select 해온 결과값을 문자열로 쉽고 간편하게 만들 수 있는 방법을 소개해 드리도록 하겠습니다.

 

 STUFF, FOR XML 

STUFF : 지정된 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환하는 함수입니다.

 

사용법

STUFF('[문자열]','[시작위치]','[크기]','[치환문자]')

FOR XML : 쿼리의 실행 결과를 XML형식으로 만들어줍니다.

 

모드

1. RAW : 행 집합의 각 행마다 SELECT문으로 반환되는 단일 행(ROW)를 생성합니다.

2. AUTO : SELECT문의 결과 XML에서 중첩된 구조를 생성합니다.

3. EXPLICIT : XML모양을 자신의 의지대로 특성과 요소를 혼합할 수 있습니다.

4. PATH : EXPLICIT 모드보다 좀 더 간편하게 XML형태를 가공할 수 있습니다.

 

 문자열 합치기 예제 

STUFF1

TEST_TABLE안에 들어있는 데이터들. 이 데이터들을 합쳐서 출력해보겠습니다.

 

1. 문자열 합치기

SELECT DISTINCT 
       STUFF((
            SELECT ',' + Name
            FROM   TEST_TABLE         
            FOR XML PATH('')
       ),1,1,'') AS Name
FROM   TEST_TABLE AS TEST

STUFF2

 

2.  Seq번호로 그룹지어 출력하기

SELECT DISTINCT Seq,
       STUFF((
            SELECT ',' + Name
            FROM  TEST_TABLE
            WHERE  Seq = TEST.Seq
            FOR XML PATH('')
       ),1,1,'') AS Name
FROM   TEST_TABLE AS TEST

STUFF3

 

[MS_SQL] 동적 피벗 테이블 만들기

[MS_SQL] 문자열 구분자 추가 (QUOTENAME) 함수 사용법 & 예제

[MS_SQL] 커서 사용법 & 예제

[MS_SQL] 반복문(WHILE)사용법 & 예제

[MS_SQL] 피벗테이블을 활용하여 세로로 된 데이터 가로로 출력하기

 

댓글

Designed by JB FACTORY