Background Image
조회 수 28218 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
1. 설명
그룹에서 NULL 이 아닌 값들을 연결하여 결과 문자열을 VARCHAR 타입으로 반환한다. 

2. 사용방법

 GROUP_CONCAT([DISTINCT] expression [ORDER BY {column | unsigned_int} [ASC | DESC]] [SEPARATOR str_val])   

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


3. 연결한 문자열이 1024 바이트 초과할 때 주의사항
group_concat_max_len 의 설정을 따른다. 기본값은 1024 바이트이며, 최소값은 4바이트, 최대값은 33,554,432바이트이다.
이 함수는 string_max_size_bytes 파라미터의 영향을 받는데, group_concat_max_len의 값이 string_max_size_bytes의 값보다 크고 GROUP_CONCAT 함수의 결과가 string_max_size_bytes의 크기 제한을 넘으면 오류가 반환된다.
string_max_size_bytes의 기본 값은 1,048,576 바이트(1M)이고, 최대값은 33,554,432 바이트(32M)이다.

즉, 기본설정 상태에서 group_concat_max_len는 1,048,576 바이트(1M)까지 설정 할 수 있고,
1M 이상일 경우에는 string_max_size_bytes 값도 함께 변경하여야 한다.



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


4. 인자로 사용되지 않는 컬럼으로 정렬하는 방법
ORDER BY를 이용한 정렬은 오직 인자로 사용되는 표현식(또는 칼럼)에 의해서만 가능
즉, group 처리하는 컬럼값으로만 정렬되고, 그 이외의 컬럼으로는 정렬이 불가 함
인라인뷰를 사용하여 우회하는 방법으로는 아래와 같은 방법이 있다.

select group_concat( col1 ) 
from ( 
     select col1, col2, col3 
     from grp_test 
     order by col2
     ) 
group by col3  

예제( 인덱스 컬럼의 순서로 정렬하고, 컬럼명으로 group_concat 처리 ) 
SELECT
  class_name, index_name, GROUP_CONCAT(key_col ), is_primary_key, is_foreign_key 
FROM ( SELECT B.class_name, B.index_name,B.key_order, B.key_attr_name AS key_col,   A.is_primary_key, A.is_foreign_key
       FROM  db_index_key B, db_index A 
       WHERE A.index_name = B.index_name 
       ORDER BY  B.class_name, B.index_name, B.key_order
      ) 
GROUP BY class_name, index_name 
ORDER BY class_name, index_name  ;




5. 사용 예제
SELECT GROUP_CONCAT(s_name) FROM code;  //SEPARATOR 구문 생략 시에는 ","로 구분
  group_concat(s_name)
======================
  'X,W,M,B,S,G'


SELECT GROUP_CONCAT(s_name ORDER BY s_name SEPARATOR ':') FROM code;  //SEPARATOR 값을 ":"로 지정, 정렬순서 지정
  group_concat(s_name order by s_name separator ':')
======================
  'B:G:M:S:W:X'


SELECT GROUP_CONCAT(s_name ORDER BY s_name SEPARATOR '') FROM code;  //SEPARATOR 값을 ""로 지정, 정렬순서 지정
  group_concat(s_name order by s_name separator '')
======================
  'BGMSWX'


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
279 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9419
278 운영관리 한 호스트내의 DB경로 변경 방법 janus 2010.02.19 12267
277 CUBRID 매니저 한 개 PC에서 CUBRID7.3과 CUBRID2008R1.4 & R2.0 매니저 사용 방법 1 정만영 2009.12.12 13054
276 응용개발 패키지 형태로 생성된 JAVA class를 JAVA SP에서 사용하기 손승일 2010.02.26 18375
275 기타 테이블에 comment 사용하기 1 남재우 2010.01.01 21051
274 질의작성 테이블 컬럼 변경 및 추가 정만영 2016.02.29 21813
273 질의작성 테이블 용량 산정 쿼리 성진 2015.12.08 7394
272 운영관리 테이블 사용량 확인방법 정만영 2015.02.03 11443
271 CUBRID 매니저 테이블 명세서 한 시트로 합치기 file 성진 2015.12.24 16515
270 질의작성 테이블 명세서 쿼리 1 성진 2017.08.04 3165
269 질의작성 테이블 리스트 취합 SQL 김창휘 2016.03.19 5521
268 질의작성 테이블 데이터 복사 하기 정만영 2009.03.14 22301
267 마이그레이션 타 DBMS를 CUBRID로 마이그레이션 시 varchar,char 컬럼 사이즈 관련 손승일 2010.07.01 38024
266 마이그레이션 타 DB 에서 마이그레이션시 질의 변경 샘플 - CASE 문 웁쓰 2009.12.31 21924
265 운영관리 큐브리드와 hostname 관계 정만영 2009.06.25 18583
264 운영관리 큐브리드매니져를 이용한 데이터베이스 자동 백업 남재우 2009.04.01 19052
263 운영관리 큐브리드 포트 정리 정만영 2016.07.05 6090
262 운영관리 큐브리드 서비스 재구동 시 cubrid manager server start: fail 오류 해결 방법 진우진 2015.12.16 7729
261 운영관리 큐브리드 사용포트 정리 3 정만영 2009.06.19 29772
260 운영관리 큐브리드 복제 구성 시 마스터 데이터베이스 백업 주의사항 정만영 2010.02.11 12591
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales