DATABASE

[MySQL] CONCAT(), CONCAT_WS() 함수 알아보기

yoonddo 2023. 7. 6. 18:28

테이블 조회시 여러 문자열 또는 여러 컬럼 값을 조회한 후에 하나의 문자열 또는 하나의 컬럼값으로 반환해야 하는

경우가 있다. 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 : 수치 또는 문자열을 반환하는 칼럼 또는 연산식을 말한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 블로그 : https://ssd0908.tistory.com/entry/MYSQL-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%99%EC%9D%B4%EA%B8%B0%ED%95%A9%EC%B9%98%EA%B8%B0-CONCAT-CONCATWS%EC%B4%88%EA%B0%84%EB%8B%A8