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 컬럼에 있는 값을 지정된 구분 기호인 더하기(+)로 연결한 문자열이 표시되었다.