개발/database

[mssql] 오라클의 LISTAGG 를 mssql에서 사용

가시죠 2021. 1. 17. 18:27
반응형

오라클의 LISTAGG 효과를 MSSQL에서 구현 시 


-- 오라클 (구분자로 ^^ 사용)
SELECT CAST(LISTAGG(컬럼, '^^') WITHIN GROUP (ORDER BY 정렬컬럼) AS VARCHAR2(1000)
FROM 테이블명
WHERE 조건값;

-- mssql (구분자로 ^^ 사용)
SELECT CAST(STUFF((SELECT '^^'+컬럼
FROM 테이블명
WHERE 조건값
ORDER BY 정렬컬럼
FOR XML PATH('')), 1, 2, '') AS VARCHAR(1000))  -- 2는 구분자의 길이값
;

-- 만약 문자열에 html 특수문자가 포함되어 있을 경우 (ex. &)
-- mssql (구분자로 ^^ 사용)
SELECT STUFF((SELECT '^^'+컬럼
FROM 테이블명
WHERE 조건값
ORDER BY 정렬컬럼
FOR XML PATH, TYPE).value(N'.[1]',N'varchar(1000)'),1,2,N'');
반응형