728x90

개요

데이터베이스 작업 시 여러 문자열을 하나로 합쳐야 하는 경우가 자주 있습니다. MySQL에서는 이러한 작업을 위해 CONCAT_WS 함수를 제공합니다.

 

본 글에서는 MySQL의 CONCAT_WS 함수에 대해서 정리하고자 합니다.

 

CONCAT_WS란❓

CONCAT_WS는 "Concatenate With Separator"의 약자로, 여러 문자열을 지정된 구분자로 연결하는 MySQL 함수입니다.

CONCAT_WS의 기본 문법

CONCAT_WS(separator, string1, string2, ...)

 

일반 CONCAT 함수와 달리, CONCAT_WS첫 번째 인자로 구분자를 지정하고, 이후의 모든 문자열 사이해당 구분자가 자동으로 삽입됩니다.

CONCAT과 CONCAT_WS의 차이점

-- CONCAT 사용
SELECT CONCAT('Hello', ' - ', 'World', ' - ', '!');
-- 결과: Hello - World - !

-- CONCAT_WS 사용
SELECT CONCAT_WS(' - ', 'Hello', 'World', '!');
-- 결과: Hello - World - !

 

위 결과에서 알 수 있듯이 CONCAT과 CONCAT_WS의 주요 차이점구분자(separator) 처리 방식입니다.

 

CONCAT을 사용할 때는 구분자를 각각 직접 입력해야 합니다.

 

즉, 'Hello'와 'World' 사이, 'World'와 '!' 사이에 각각 ' - '를 별도로 지정해야 합니다.

-- CONCAT: 구분자를 4번 써야 함
CONCAT(str1, ' - ', str2, ' - ', str3, ' - ', str4, ' - ', str5)

-- CONCAT_WS: 구분자를 한 번만 쓰면 됨
CONCAT_WS(' - ', str1, str2, str3, str4, str5)

 

반면 CONCAT_WS첫 번째 인자로 구분자를 한 번만 지정하면, 이후의 모든 문자열 사이에 자동으로 해당 구분자가 삽입됩니다. 이는 코드를 더 간결하게 만들고, 실수를 줄일 수 있으며, 특히 많은 문자열을 연결할 때 매우 효율적입니다.

 

 

CONCAT_WS 주의 사항❗️

 

  • 구분자는 반드시 첫 번째 인자로 지정해야 합니다.
  • 문자열이 아닌 데이터 타입자동으로 문자열로 변환됩니다.
  • 구분자가 NULL이면 전체 결과가 NULL이 됩니다.