여러 행 문자열 병합
최소 지원 버전은 약간의 차이가 있을 수 있습니다.
테이블 명세
| 물리명 | 논리명 | 타입 | 길이 |
| 해시태그 | 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
;