Background Image
조회 수 3664 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
273 질의작성 JAVA_SP를 이용해서 정규표현식을 이용해서 치환을 하자. file 성진 2017.10.10 23
272 운영관리 윈도우 OS에서 java sp 사용 시 Java VM is not running 해결 방법 정훈 2017.09.04 41
271 질의작성 테이블 명세서 쿼리 1 성진 2017.08.04 223
270 질의작성 loose index scan을 활용한 효과적인 쿼리 튜닝 방안 박세훈 2017.06.01 612
269 운영관리 CUBRID 8.2.2 ~ 8.4.x 버전에서 'ALTER SERIAL ... CACHE <cached_num> / NOCACHE' ERROR 해결 방법 주영진 2017.03.08 1192
268 질의작성 CONNECT BY 절 포함 질의 튜닝 예제 박세훈 2017.02.28 1583
267 질의작성 UPDATE에서 조인을 통해, 결과값 수정하는 방법 박동윤 2016.12.27 1780
266 질의작성 subquery를 이용한 튜닝예제 file 김창휘 2016.12.27 1887
265 기타 Oracle import 시 character set 변경관련 김창휘 2016.12.26 1978
264 기타 JBoss 사용 시 statement pooling 설정 손승일 2016.12.16 1369
263 기타 Tomcat's JDBC Pool 사용 시 JNDI DataSource 설정 손승일 2016.12.16 1669
262 응용개발 CUBRID 와 DBCP의 관계 엄기호 2016.12.14 1181
261 질의작성 입력된 년월 또는 두개의 날짜을 이용하여 달력 및 주차 구하기 1 성진 2016.08.10 3372
260 운영관리 큐브리드 포트 정리 정만영 2016.07.05 3490
259 운영관리 큐브리드 마스터 소켓 디렉토리 변경방법 정만영 2016.07.05 3445
258 응용개발 Windows 환경에서 JAVA SP 사용 utf-8 한글 깨짐 해결 file 손승일 2016.07.01 3363
257 질의작성 INSTR함수 사용하기 엄기호 2016.06.29 4291
» 질의작성 group_concat(문자열 그룹처리) 함수 사용하기 권호일 2016.06.29 3664
255 질의작성 두 datetime 연산결과를 "?일 ?시:?분:?초"로 표시하기 권호일 2016.05.18 3389
254 운영관리 Invalid XASL tree node content 에러 손승일 2016.04.26 3798
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

Tel. 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales