
개요
데이터베이스 작업 시 여러 문자열을 하나로 합쳐야 하는 경우가 자주 있습니다. 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이 됩니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2025.02.11 - ORDER BY의 숫자의 의미 (0) | 2025.02.11 |
---|---|
[TIL, 일일 회고] 2025.02.10 - API와 Endpoint 차이점 알아보기 (0) | 2025.02.10 |
[TIL, 일일 회고] 2025.02.08 - Java 입력 처리: BufferedReader vs Scanner 실제 성능 비교해보기 (0) | 2025.02.08 |
[TIL, 일일 회고] 2025.02.07 - VO와 DTO는 같은 의미인가❓ (1) | 2025.02.07 |
[TIL, 일일 회고] 2025.02.06 - 호출 스택(Call Stack)의 동작 원리와 예제로 이해하기 (0) | 2025.02.06 |

개요
데이터베이스 작업 시 여러 문자열을 하나로 합쳐야 하는 경우가 자주 있습니다. 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이 됩니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2025.02.11 - ORDER BY의 숫자의 의미 (0) | 2025.02.11 |
---|---|
[TIL, 일일 회고] 2025.02.10 - API와 Endpoint 차이점 알아보기 (0) | 2025.02.10 |
[TIL, 일일 회고] 2025.02.08 - Java 입력 처리: BufferedReader vs Scanner 실제 성능 비교해보기 (0) | 2025.02.08 |
[TIL, 일일 회고] 2025.02.07 - VO와 DTO는 같은 의미인가❓ (1) | 2025.02.07 |
[TIL, 일일 회고] 2025.02.06 - 호출 스택(Call Stack)의 동작 원리와 예제로 이해하기 (0) | 2025.02.06 |