Background Image
조회 수 28246 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
259 응용개발 tomcat 5.5 버전 이상에서 dbcp(커넥션 풀링) 설정법 admin 2008.11.21 28527
258 CUBRID 매니저 Database(db이름) is running is standalone mode 오류가 뜰 경우 file 시난 2009.04.29 28489
257 응용개발 CUBRID에서 systimestamp, sysdatetime default값에 대한 정의 cubebridge 2009.12.16 28265
» 질의작성 group_concat(문자열 그룹처리) 함수 사용하기 권호일 2016.06.29 28246
255 응용개발 Attempt to access a closed ResultSet(PreparedStatement) 오류 admin 2008.11.21 28035
254 마이그레이션 CUBRID는 MySQL의 varchar(255)와 동일한 길이가 아닌가요? 손승일 2009.12.28 27790
253 운영관리 데이터베이스를 다른 머신으로 옮기는 방법 admin 2008.11.21 27669
252 응용개발 loadjava 사용 시 inner class 로딩은 어떻게? admin 2008.11.21 27450
251 기타 XE(구 제로보드XE) 에서 로그인이 되지 않을 경우 해결법 Prototype 2009.04.16 26993
250 기타 OS별 CPU, memory, kernel bit 를 확인하는 방법입니다. 남재우 2009.06.30 26902
249 운영관리 libjvm.so 찾지 못하여 서버 구동이 되지 않은 경우 admin 2008.11.21 26465
248 응용개발 CUBRID 에서 제공하는 ODBC 함수 목록 admin 2008.11.21 26051
247 운영관리 linux에서 ipcs를 이용한 CUBRID의 Shared Memory 확인하는 방법 seongjoon 2010.03.31 25821
246 CUBRID 매니저 UTF8 로 저장된 데이터를 매니저로 조회하는 방법 file Prototype 2009.03.21 25636
245 운영관리 SElinux 환경에서 CUBRID 사용하기 2 admin 2008.11.21 25505
244 질의작성 INSERT수행 시, 현재날짜,현재시각으로 자동 입력하는 방법 주현 2015.07.08 25205
243 질의작성 중복데이터 제거 방법 Prototype 2009.07.01 25067
242 질의작성 쿼리로 인덱스 정보 확인하기 시난 2009.12.29 24640
241 운영관리 큐브리드 백업방법 정만영 2009.06.18 24563
240 마이그레이션 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법 file cubebridge 2012.04.14 24549
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