사용자 도구

사이트 도구


사이드바

기술문서:레퍼런스:쿼리:기본:여러_행_문자열_병합

문서의 이전 판입니다!


여러 행 문자열 병합

최소 지원 버전은 약간의 차이가 있을 수 있습니다.

테이블 명세

물리명 논리명 타입 길이
해시태그 hashtag 문자형 100
정렬 순서 sort_order 숫자형

SQL 스크립트

CREATE TABLE ex_aggregate (
	hashtag VARCHAR(100) NOT NULL
	, sort_order INT NOT NULL
);

INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('MySQL', 1);
INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('MariaDB', 2);
INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('MSSQL', 3);
INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('Oracle', 4);
INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('Tibero', 5);
INSERT INTO ex_aggregate (hashtag, sort_order) VALUES ('PostgreSQL', 6);

MySQL/MariaDB

-- MySQL 4.1 이상/MariaDB 5.1 이상
SELECT
	GROUP_CONCAT(hashtag ORDER BY sort_order ASC SEPARATOR ',') AS hashtag
FROM
	ex_aggregate
;

MSSQL

-- MSSQL 2005 이상
SELECT
	STUFF(
		(SELECT
			',' + hashtag
		FROM
			ex_aggregate
		ORDER BY
			sort_order ASC
		FOR XML PATH('')
		)
	, 1, 1, '') AS hashtag;
;

-- MSSQL 2017 이상
-- 정렬 순서 미보장
SELECT
	STRING_AGG(hashtag, ',') AS hashtag
FROM
	ex_aggregate
;

-- MSSQL 2022 이상
SELECT
	STRING_AGG(hashtag, ',') WITHIN GROUP (ORDER BY sort_order ASC) AS hashtag 
FROM
	ex_aggregate
;

Oracle/Tibero

-- Oracle 11g 이상/Tibero 3 이상
SELECT
	LISTAGG(hashtag, ',') WITHIN GROUP (ORDER BY sort_order ASC) AS hashtag
FROM
	ex_aggregate
;

PostgreSQL

-- PostgreSQL 9.0 이상
SELECT
	STRING_AGG(hashtag, ',' ORDER BY sort_order ASC) AS hashtag
FROM
	ex_aggregate
;