SQLite | SQLite 함수 | 컬럼 값을 연결하여 표시 (group_concat 함수)
group_concat 함수를 사용하면 지정한 컬럼에 있는 값의 구분 기호를 사용하여 연결하여 표시할 수 있다. 여기에서 group_concat 함수의 사용법에 대해 설명한다.
group_concat 함수 사용법
group_concat 함수는 그룹 내의 컬럼의 값을 연결하여 표시하는데 사용한다. 형식은 다음과 같다.
group_concat(컬럼명)
인수에는 컬럼명을 지정한다. 지정한 컬럼에 있는 값 중에 NULL이 아닌 값을 하나의 문자열로 연결한 결과를 반환한다. GROUP BY 절을 사용하는 경우 그룹마다 이루어 진다.
구분 문자를 지정하지 않은 경우에는 쉼표(,)를 구분자로 값을 연결한다. 쉼표(,) 이외의 구분 기호를 지정하려면 다음과 같은 형식을 작성한다.
group_concat(컬럼명, 구분 문자)
–
그러면 실습으로 컬럼 값을 연결하여 표시해 보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.
create table user (id integer, name text, gender text);
sqlite> create table user (id integer, name text, gender text);
sqlite>
INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.
insert into user values (1, 'devkuma', 'Man');
insert into user values (2, 'kimkc', 'Woman');
insert into user values (3, 'araikuma', 'Man');
insert into user values (4, NULL, 'Man');
insert into user values (5, 'raccoon', 'Woman');
sqlite> insert into user values (1, 'devkuma', 'Man');
sqlite> insert into user values (2, 'kimkc', 'Woman');
sqlite> insert into user values (3, 'araikuma', 'Man');
sqlite> insert into user values (4, NULL, 'Man');
sqlite> insert into user values (5, 'raccoon', 'Woman');
sqlite>
그러면 group_concat 함수를 사용하여 name 컬럼의 값을 연결하여 조회해 보자.
select group_concat(name) from user;
sqlite> select group_concat(name) from user;
group_concat(name)
------------------------------
devkuma,kimkc,araikuma,raccoon
sqlite>
name 컬럼에 있는 값을 기본 구분 기호인 쉼표(,)로 연결한 문자열을 조회하였다.
다음은 gender 컬럼마다 그룹화하여 연결한 값을 조회해 본다.
select gender, group_concat (name) from user group by gender;
sqlite> select gender, group_concat (name) from user group by gender;
gender group_concat (name)
---------- -------------------
Man devkuma,araikuma
Woman kimkc,raccoon
sqlite>
GROUP BY 절을 사용하여 그룹화 한 경우에는 그룹 단위로 지정한 컬럼의 값을 연결하여 받아온다. (Group By 절에 대해서는 “데이터를 그룹화하여 합계와 평균을 계산 (GROUP BY 절, HAVING 절)“를 참조한다.)
연결할 때 구분 기호를 지정하기
구분 기호를 기본 쉼표(,)에서 다른 문자로 변경하려면 group_concat 함수의 두 번째 인수에 구분 기호를 지정한다.
그럼 구분 기호로 플러스(+)를 지정한 group_concat 함수를 사용하여 name 컬럼의 값을 연결하여 조회해 본다.
select group_concat(name, '+') from user;
sqlite> select group_concat(name, '+') from user;
group_concat(name, '+')
------------------------------
devkuma+kimkc+araikuma+raccoon
sqlite>
name 컬럼에 있는 값을 지정된 구분 기호인 더하기(+)로 연결한 문자열이 표시되었다.