CONCAT() 함수로 여러 컬럼 값 결합하기
MySQL에서 두 개 이상의 컬럼(열) 값을 하나의 단일 컬럼으로 결합하려면 CONCAT() 함수를 사용하면 됩니다. 이때 CONCAT() 함수의 인자로는 결합하고자 하는 각 컬럼의 이름을 지정합니다. 함수는 지정된 순서대로 값을 이어 붙여 하나의 문자열로 반환합니다.
기본 문법
CONCAT(문자열1, 문자열2, ...)
인자에는 컬럼명뿐만 아니라 일반 문자열 리터럴도 함께 사용할 수 있으므로, 구분자(쉼표, 하이픈 등)를 원하는 형태로 삽입할 수 있다는 점이 유용합니다.
실전 예제
예를 들어 'Student'라는 테이블이 있고, 학생의 ID, 이름, 주소 정보를 한 개의 컬럼에 모아서 조회하고 싶다고 가정해 보겠습니다. 이 경우 다음과 같은 쿼리를 작성할 수 있습니다.
mysql> Select Id, Name, Address, CONCAT(ID,', ',Name,', ', Address)AS 'ID, Name,Address' from Student; +------+---------+---------+--------------------+ | Id | Name | Address | ID, Name, Address | +------+---------+---------+--------------------+ | 1 | Gaurav | Delhi | 1, Gaurav, Delhi | | 2 | Aarav | Mumbai | 2, Aarav, Mumbai | | 15 | Harshit | Delhi | 15, Harshit, Delhi | | 20 | Gaurav | Jaipur | 20, Gaurav, Jaipur | +------+---------+---------+--------------------+ 4 rows in set (0.00 sec)
실행 결과를 보면 세 개의 컬럼 값이 쉼표와 공백으로 구분되어 하나의 문자열로 깔끔하게 결합된 것을 확인할 수 있습니다. 또한 AS 키워드를 사용해 결합된 결과 컬럼에 'ID, Name, Address'라는 별칭을 부여했기 때문에 출력 결과의 가독성도 높아졌습니다.
활용 시 알아두면 좋은 팁
- NULL 값 주의: CONCAT() 함수의 인자 중 하나라도 NULL이 포함되면 전체 결과가 NULL로 반환됩니다. NULL이 있을 가능성이 있는 컬럼이라면 IFNULL() 함수로 먼저 처리하는 것이 안전합니다.
- CONCAT_WS() 함수: 구분자를 반복해서 입력하는 것이 번거롭다면, 첫 번째 인자에 구분자를 지정하면 나머지 값들 사이에 자동으로 삽입해 주는 CONCAT_WS() 함수를 사용하는 것이 더 편리합니다.