Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

GROUP_CONCAT 함수

설명

GROUP_CONCAT 함수는 그룹에서 NULL이 아닌 값들을 연결하여 결과 문자열을 VARCHAR 타입으로 반환한다. 질의 결과 행이 없거나 NULL 값만 있으면 NULL을 반환한다.

리턴 값의 최대 크기는 시스템 파라미터 group_concat_max_len의 설정을 따른다. 기본값은 1024바이트이며, 최소값은 4바이트, 최대값은 33,554,432바이트이다. 최대값을 초과하면 NULL을 반환한다.

중복되는 값을 제거하려면 DISTINCT 절을 사용하면 된다. 그룹 결과의 값 사이에 사용되는 기본 구분자는 쉼표(,)이며, 구분자를 명시적으로 표현하려면 SEPARATOR 절과 그 뒤에 구분자로 사용할 문자열을 추가한다. 구분자를 제거하려면 SEPARATOR 절 뒤에 빈 문자열(empty string)을 입력한다.

결과 문자열에 문자형 데이터 타입이 아닌 다른 타입이 전달되면, 에러를 반환한다.

GROUP_CONCAT 함수를 사용하려면 다음의 조건을 만족해야 한다.

  • 입력 인자로 하나의 표현식(또는 칼럼)만 허용한다.
  • ORDER BY를 이용한 정렬은 오직 인자로 사용되는 표현식(또는 칼럼)에 의해서만 가능하다.
  • 구분자로 사용되는 문자열은 문자형 타입만 허용하며, 다른 타입은 허용하지 않는다.

구문

GROUP_CONCAT([DISTINCT] {col | expression}

             [ORDER BY {col | unsigned_int} [ASC | DESC]]

             [SEPARATOR str_val])

  • expression : 수치 또는 문자열을 반환하는 하나의 연산식
  • str_val : 구분자로 쓰일 문자열
  • DISTINCT : 결과에서 중복되는 값을 제거한다.
  • ORDER BY : 결과 값의 순서를 지정한다.
  • SEPARATOR : 결과 값 사이에 구분할 구분자를 지정한다. 생략하면 기본값인 쉼표(,)를 구분자로 사용한다.
예제

SELECT GROUP_CONCAT(s_name) FROM code;

  group_concat(s_name)

======================

  'X,W,M,B,S,G'

 

SELECT GROUP_CONCAT(s_name ORDER BY s_name SEPARATOR ':') from code;

  group_concat(s_name order by s_name separator ':')

======================

  'B:G:M:S:W:X'

 

CREATE TABLE t(i int);

INSERT INTO t VALUES (4),(2),(3),(6),(1),(5);

 

SELECT GROUP_CONCAT(i*2+1 ORDER BY 1 SEPARATOR '') FROM t;

  group_concat(i*2+1 order by 1 separator '')

======================

  '35791113'