관리 메뉴

Life goes slowly...

[Mysql] 문자열 합치는 함수 - CONCAT(), CONCAT_WS() 본문

프로그래밍/MySQL

[Mysql] 문자열 합치는 함수 - CONCAT(), CONCAT_WS()

빨강소 2020. 9. 11. 10:26
728x90
반응형

 

Database SQL 조회 시 여러 문자열 또는 여러 컬럼 값을 조회 한 후에 하나의 문자열 또는 하나의 컬럼 값으로 반환해야 할 경우가 있습니다.

Oracle(오라클)에서는 || 를 통하여 쉽고 간단하게 처리가 가능하지만 Mysql에서는 CONCAT(), CONCAT_WS() 함수를 사용해야 합니다.

 

Mysql의 CONCAT() 함수

Mysql의 CONCAT() 함수는 둘 이상의 문자열이나 둘 이상의 컬럼값을 순서대로 합쳐서 반환해 주는 함수입니다.

하지만 조회하거나 합쳐지는 문자열이나 컬럼값이 NULL이 포함되면 반환되는 값도 NULL로 반환하게 됩니다.

엑셀의 CONCAT 함수와 같은 기능을 가진 함수입니다.

 

SELECT CONCAT(문자열1, 문자열2 [, 문자열3 ...]) FROM [조회 테이블명]

 

SELECT CONCAT('HA','BBB',' ','FOR','CD') FROM DUAL;
SELECT CONCAT('999','.','111') FROM DUAL;
SELECT CONCAT('HA','BBB',NULL,'FOR','CD') FROM DUAL;

#HABBB FORCD
#999.111
#NULL

 

Mysql의 CONCAT_WS() 함수

Mysql의 CONCAT_WS() 함수는 둘 이상의 문자열이나 둘 이상의 컬럼 값을 반복되는 구분자를 넣고 순서대로 합쳐서 반환해 주는 함수입니다.

CONCAT_WS() 함수는 둘 이상의 문자열이 있는 경우에 문자열 사이에 설정 구분자를 넣어야 합니다.

Mysql의 CONCAT()와는 다르게 합쳐지는 문자열에 Null을 포함하여도 Null로 반환하지 않습니다.

PHP에서 implode 와 같은 함수입니다.

SELECT CONCAT_WS(구분자, 문자열1 [, 문자열2, 문자열3 ...]) FROM [조회할 테이블명]

 

SELECT CONCAT_WS(',','HE','LLO','WOR','LD') FROM DUAL;
SELECT CONCAT_WS(',','HE','LLO',NULL,'WOR','LD') FROM DUAL;
SELECT CONCAT_WS(',','111','222','333') FROM DUAL;

#HE,LLO,WOR,LD
#HE,LLO,WOR,LD
#111,222,333

 

Mysql의 GROUP_CONCAT() 함수

Mysql의 GROUP_CONCAT() 함수는 Group By로 된 레코드들을 원하는 구분자를 이용하여 하나의 문자열로 합쳐서 반환해 주는 함수입니다.

Java와 같은 프로그래밍에서는 For 문을 사용하여 문자열을 붙여도 되긴 하겠지만 DB에서 조회 시에 쉽게 결괏값을 합쳐져 있는 Data를 받을 때 사용하는 함수입니다.

GROUP_CONCAT([DISTINCT] expression [ORDER BY {column | unsigned_int} [ASC | DESC]] [SEPARATOR 구분자])   

SEPARATOR -- 결과 값 사이에 구분할 구분자를 지정한다. 생략하면 기본값인 쉼표(,)를 구분자로 사용한다.
expression -- 수치 또는 문자열을 반환하는 칼럼 또는 연산식
728x90
반응형
Comments