반응형
CONCAT
둘 이상의 문자열 값을 엔드투엔드 방식으로 연결하거나 조인한 결과 문자열을 반환합니다.
인수는 2개 이상 254개 이하로 사용 가능하다.
CONCAT(값1, 값2, 값3, ... 값N)
SELECT
CONCAT('concat함수: ', '문자', '문자') AS test1,
CONCAT('concat함수: ', '문자', 1) AS test2,
CONCAT('concat함수: ', NULL) AS test3,
CONCAT(NULL, NULL) AS test4 ;
같은 데이터 타입이나 다른 데이터 타입을 연결 시에는 가능하다. 하지만
CONCAT에서 NULL값은 빈 문자열로 암시적으로 변환하고,
CONCAT에서 모두 NULL값을 인수로 넣으면 VARCHAR(1) 형식의 빈 문자열을 반환한다.
GROUP_CONCAT
필요에 의해 서로 다른 결과를 한줄로 합쳐서 보여줘야 할 경우가 있다.
전체 결과값을 가져와서 java 와 같은 프로그램 언어에서 for 문을 돌며 문자열을 붙여도 되긴 하지만
Select 쿼리를 던질때 결과값으로 합쳐져 있는 문자열을 받는게 더 편하다.
SELECT * FROM fruits;
id | type | name |
1 | 과일 | 수박 |
2 | 과일 | 사과 |
3 | 과일 | 바나나 |
4 | 과일 | 키위 |
타입이 과일인 과일의 이름을 한줄에 보고 싶다면 이 때 , GROUP_CONCAT을 사용할 수 있다.
SELECT type,
GROUP_CONCAT(name) AS '과일명'
FROM fruits
GROUP BY type;
과일이라는 타입으로 그룹하여 문자열을 합쳐 보여줬다. 하지만 특정 구분자를 사이에 넣어 문자열을 합칠 수 있다.
또한 해당 그룹핑에서 ORDER BY 정렬을 통해 문자열을 정렬도 가능하다.
-- 기본형
SELECT type,
GROUP_CONCAT(name) AS '과일명'
FROM fruits
GROUP BY type;
-- 중복제거
SELECT type,
GROUP_CONCAT(DISTINCT name) AS '과일명'
FROM fruits
GROUP BY type;
-- 구분자 지정
SELECT type,
GROUP_CONCAT(DISTINCT name SEPARATOR ', ') AS '과일명'
FROM fruits
GROUP BY type;
-- 문자열 정렬
SELECT type,
GROUP_CONCAT(DISTINCT name ORDER BY name SEPARATOR ', ') AS '과일명'
FROM fruits
GROUP BY type;
MySQL에서 GROUP_BY로 문자열을 합칠땐 GROUP_CONCAT을 이용한다.
1. 기본형 : GROUP_CONCAT(필드명)
2. 구분자 변경 : GROUP_CONCA(필드명 SEPARATOR '구분자')
3. 중복제거 : GROUP_CONCA(DISTICT 필드명)
4. 문자열 정렬 : GROUP_CONCA(필드명 ORDER BY 필드명)
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] 쿼리문 통계(일간/주간/월간/기간별), DATE_FORMAT() (0) | 2022.11.11 |
---|---|
[Mysql] 소수점 존재하는 데이터 확인하기 (0) | 2022.10.04 |
[MySQL] UNION을 사용해서 SUM 구하기 (1) | 2022.04.18 |
[MySQL] UNION, UNION ALL (0) | 2022.04.06 |
[MySQL] SQL ROUND, FLOOR, CEIL 함수 (0) | 2022.04.01 |