Background Image
조회 수 28257 추천 수 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 응용개발 Windows 환경에서 JAVA SP 사용 utf-8 한글 깨짐 해결 file 손승일 2016.07.01 4593
258 응용개발 CUBRID DB에서 critical section 정보 출력하기 file 주현 2015.12.31 4611
257 질의작성 Oracle UTL_ENCODE.TEXT_ENCODE를 CUBRID로 변환하기 김창휘 2016.03.21 4647
256 운영관리 산술 연산 결과를 피젯수 또는 젯수의 자리 수에 맞춰 보자. 성진 2016.03.01 4817
255 운영관리 브로커와 DB 간 연결 테스트 박동윤 2015.12.29 4935
254 응용개발 CUBRID HA 제약 사항 및 확인 방법 손승일 2015.12.29 5305
253 질의작성 테이블 리스트 취합 SQL 김창휘 2016.03.19 5522
252 질의작성 입력된 년월 또는 두개의 날짜을 이용하여 달력 및 주차 구하기 1 성진 2016.08.10 5589
251 질의작성 FOR UPDATE 정만영 2016.01.27 5990
250 운영관리 큐브리드 포트 정리 정만영 2016.07.05 6104
249 마이그레이션 MySQL 테이블 크기 조사하기-공유 주현 2015.12.31 6207
248 운영관리 CUBRID BACKUP (linux, window) file 박동윤 2015.12.30 6249
247 마이그레이션 CM(CUBRID Manager)을 이용하여 행정표준코드시스템의 기관코드 가져오기 file 권호일 2015.12.28 6329
246 질의작성 두 datetime 연산결과를 "?일 ?시:?분:?초"로 표시하기 권호일 2016.05.18 6370
245 질의작성 ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기 김창휘 2015.12.31 6461
244 질의작성 일정 범위 임의의 정수 생성 방법(random 함수 응용) 손승일 2015.12.22 6473
243 기타 Tomcat's JDBC Pool 사용 시 JNDI DataSource 설정 손승일 2016.12.16 6507
242 운영관리 'Has been interrupted.' CUBRIDException 발생 주현 2016.01.07 6596
241 CUBRID 매니저 큐브리드 매니저 호스트 접속 시 JDBC 드라이버 찾을 수 없는 오류 해결 1 file 진우진 2016.03.28 6777
240 운영관리 windows 환경에서 압축파일로 CUBRID 설치시 환경변수 쉽게 설정하기 김승훈 2015.07.02 6995
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