DB

[MySQL] 문자열 연결 함수: CONCAT, CONCAT_WS 활용법

인생아 2025. 7. 19. 09:55
반응형

여러 문자열을 한 줄로 합치고 싶을 때 가장 먼저 떠올려야 할 함수는 바로 CONCAT()와 CONCAT_WS()이다.
실무에서 이름 조합, 로그 메세지 생성, CSV 형식 만들기, URL 생성 등에 자주 활용된다.

🧩 CONCAT() 함수 기본 개념

CONCAT(str1, str2, ...)
입력된 문자열을 모두 이어 붙여 하나의 문자열로 만든다.

SELECT CONCAT('My', 'SQL'); -- 결과: 'MySQL'
SELECT CONCAT('이름: ', '홍길동'); -- 결과: '이름: 홍길동'

⚠️ NULL이 하나라도 있으면 전체 결과가 NULL이 된다.

SELECT CONCAT('이름: ', NULL); -- 결과: NULL

이를 방지하려면 IFNULL() 또는 COALESCE()를 함께 쓰자.

SELECT CONCAT('이름: ', IFNULL(NULL, '없음')); -- 결과: '이름: 없음'
반응형

🧪 실습 예제

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;

영문 이름을 성과 이름으로 합치거나, 한글에서는 "홍" + "길동"처럼 이름 전체를 구성할 때 자주 쓰인다.

🔸 CONCAT_WS()란?

CONCAT_WS(separator, str1, str2, ...)
WS = With Separator
구분자(sep)를 지정하고 문자열들을 연결하는 함수다.

SELECT CONCAT_WS('-', '2025', '07', '17'); -- 결과: '2025-07-17'
SELECT CONCAT_WS(', ', '김철수', '010-1234-5678', '서울'); 
-- 결과: '김철수, 010-1234-5678, 서울'

NULL은 자동으로 무시되고 연결됨 (CONCAT과 다름!)

SELECT CONCAT_WS('-', 'A', NULL, 'C'); -- 결과: 'A-C'

🛠️ 실무 활용 팁

  • 날짜, 전화번호, 주소, 코드 등을 구분자와 함께 문자열로 표현할 때 CONCAT_WS()가 유리함
  • NULL 처리에 유연하므로 가변 필드 연결에 적합
  • CONCAT()은 문자열 개수 제한 없음, 단 NULL 조심

💡 가변 컬럼 조합 예제

-- 이름, 부서, 직급을 하나의 문자열로 생성
SELECT CONCAT_WS(' / ', emp_name, dept_name, job_title) AS profile
FROM employee;
-- URL 파라미터 만들기
SELECT CONCAT('https://example.com/view?id=', user_id);
-- CSV용 문자열
SELECT CONCAT_WS(',', user_id, user_name, email);
반응형

⚠️ 주의사항 요약

항목 CONCAT() CONCAT_WS()
구분자 사용 불가능 가능 (첫 인자에 명시)
NULL 처리 NULL 전체 무효 NULL 무시하고 연결
사용 예 이름, 문장 조합 날짜, CSV, 로그, 파라미터 등
 

🔍 마무리 요약

  • CONCAT()는 단순 문자열 연결, NULL 포함 주의
  • CONCAT_WS()는 구분자 추가 + NULL 무시 기능으로 실무 활용도 높음
  • 실무에서는 IFNULL, COALESCE와 함께 쓰는 패턴이 많다

🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

 

반응형