테이블 조회시 여러 문자열 또는 여러 컬럼 값을 조회한 후에 하나의 문자열 또는 하나의 컬럼값으로 반환해야 하는
경우가 있다. Oracle에서는 || 를 사용해 간단하게 처리할 수 있지만 MySQL 에서는 CONCAT(), CONCAT_WS() 함수를
사용해야 한다.
CONCAT() 함수
CONCAT() 함수는 둘 이상의 문자열이나 둘 이상의 컬럼값을 순서대로 합쳐서 반환하는 함수이다.
하지만 조회하거나 합쳐지는 문자열 또는 컬럼값에 NULL이 포함되어 있으면 반환되는 값도 NULL로 반환된다.
엑셀의 CONCAT 함수와 같은 기능을 가졌다.
SELECT CONCAT(문자열1, 문자열2 [, 문자열3 ...]) FROM [조회 테이블명]
예시
SELECT CONCAT('HE','LL',' ','OOOO','!') FROM TABLE;
SELECT CONCAT('HI','HELLO','NULL','!') FROM TABLE;
-- 결과 : HELL OOOO!
-- 결과 : NULL
CONCAT_WS() 함수
CONCAT_WS() 함수는 둘 이상의 문자열이나 둘 이상의 컬럼값을 반복되는 구분자를 넣고 순서대로
합쳐 반환하는 함수이다. 둘 이상의 문자열이 있는 경우 문자열 사이에 설정 구분자를 넣어야한다.
CONCAT()과는 다르게 합쳐지는 문자열에 NULL이 존재해도 NULL로 반환하지 않는다.
SELECT CONCAT_WS(구분자, 문자열1 [,문자열2, 문자열3, ...]) FROM TABLE
예시
SELECT CONCAT_WS(',','HE','LLO','WOR','LD') FROM TABLE;
SELECT CONCAT_WS(',','010','1234','5678') FROM TABLE;
SELECT CONCAT_WS(',','ELE','PHAN','NULL','T') FROM TABLE;
-- 결과 : HE,LLO,WOR,LD
-- 결과 : 010-1234-5678
-- 결과 : ELE,PHAN,T
GROUP_CONCAT() 함수
GROUP_CONCAT() 함수는 GROUP BY로 된 레코드들을 원하는 구분자를 이용해 하나의 문자열로 합쳐서 반환하는
함수이다. JAVA와 같은 프로그래밍에서는 For문을 사용해 문자열을 붙여도 되지만 DB에서 조회시 쉽게 결과값을
합쳐 데이터를 가져올 때 사용하는 함수이다.
예시
GROUP_CONCAT([DISTINCT] expression [ORDER BY {column | unsigned_int} [ASC | DESC]] [SEPARATOR 구분자])
-- SEPARATOR : 결과값 사이에 구분할 구분자를 지정한다. 생략하면 기본값은 쉼표를 구분자로 지정한다.
-- expression : 수치 또는 문자열을 반환하는 칼럼 또는 연산식을 말한다.
'DATABASE' 카테고리의 다른 글
[MySQL] DATEDIFF(), DATEADD() 함수 알아보기 (0) | 2023.07.06 |
---|---|
[MySQL] SELECT문 작성 순서와 실행 순서 알아보기 (0) | 2023.07.06 |
[MySQL] CASE WHEN THEN 구문 알아보기 (0) | 2023.07.06 |
[MySQL] ROUND(), TRUNCATE(), CEILING(), FLOOR() 함수 알아보기 (0) | 2023.07.06 |
[MySQL] JOIN 명령어 알아보기 (0) | 2023.07.06 |