MySQL의 CONCAT_WS() 함수는 두 개 이상의 문자열을 구분자(separator)와 함께 하나로 연결할 때 사용하는 함수입니다. 여기서 CONCAT_WS()에 포함된 WS는 WITH SEPARATOR(구분자 포함)를 의미하며, 따라서 이 함수를 '구분자를 사용하는 문자열 연결 함수'라고 부를 수 있습니다.
CONCAT_WS() 함수의 기본 문법
CONCAT_WS(구분자, 문자열1, 문자열2, ..., 문자열N)
CONCAT_WS() 함수의 인수는 첫 번째 자리에 오는 구분자와, 그 뒤에 이어지는 연결할 문자열들로 구성됩니다. 모든 문자열은 지정한 구분자를 사이에 두고 하나의 문자열로 합쳐집니다.
주의할 점은 구분자가 숫자 값이 아닌 경우 반드시 작은따옴표(')나 큰따옴표(")로 감싸야 한다는 것입니다.
CONCAT_WS() 함수 사용 예제
예제 1: 공백을 구분자로 사용하기
mysql> SELECT CONCAT_WS(' ','New', 'Delhi');
+-------------------------------+
| CONCAT_WS(' ','New', 'Delhi') |
+-------------------------------+
| New Delhi |
+-------------------------------+
1 row in set (0.00 sec)
위 예제에서는 공백 문자(' ')가 구분자 역할을 하여, 연결 대상인 두 문자열 'New'와 'Delhi' 사이에 삽입되어 최종적으로 'New Delhi'라는 결과를 반환합니다.
예제 2: 문장 형태의 구분자 사용하기
mysql> SELECT CONCAT_WS(' is our ','Delhi','Capital');
+-----------------------------------------+
| CONCAT_WS(' is our ','Delhi','Capital') |
+-----------------------------------------+
| Delhi is our Capital |
+-----------------------------------------+
1 row in set (0.00 sec)
이번 예제에서는 ' is our '라는 문자열이 구분자로 사용되어, 'Delhi'와 'Capital' 두 문자열 사이에 삽입됩니다. 그 결과 'Delhi is our Capital'이라는 완전한 문장이 만들어집니다.
정리
CONCAT_WS() 함수는 일반적인 CONCAT() 함수와 달리 각 문자열 사이에 자동으로 구분자를 삽입해 주기 때문에, 이름·주소·날짜 등 여러 필드를 하나의 문자열로 조합할 때 특히 유용합니다. 또한 NULL 값이 포함된 문자열은 자동으로 건너뛰기 때문에 데이터 처리 시에도 안정적으로 활용할 수 있습니다.