MySQL에서는 CONCAT() 함수를 사용하여 두 개 이상의 열(column)에 저장된 값을 하나로 합쳐서 조회할 수 있습니다. 이때 CONCAT() 함수의 인자로 합치고 싶은 열 이름들을 순서대로 지정하면 됩니다.
기본 사용법
예를 들어 '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)
위 결과를 보면 CONCAT() 함수가 세 개의 열 값 사이에 쉼표와 공백을 구분자로 넣어 하나의 문자열로 연결한 것을 확인할 수 있습니다. 별칭(Alias)을 지정하지 않으면 함수 전체가 열 이름으로 표시되므로, AS 절을 활용해 'ID, Name, Address'처럼 읽기 쉬운 이름을 붙여 주는 것이 좋습니다.
알아두면 좋은 점
NULL 처리: CONCAT() 함수는 인자 중 하나라도 NULL이면 결과 전체가 NULL로 반환됩니다. NULL이 포함될 가능성이 있는 열을 다룰 때는 IFNULL() 또는 COALESCE() 함수를 함께 사용하는 것이 안전합니다.
CONCAT_WS() 활용: 구분자를 반복해서 입력하는 것이 번거롭다면 CONCAT_WS(구분자, 열1, 열2, ...) 함수를 사용하면 더 간결하게 작성할 수 있습니다. WS는 'With Separator'의 약자입니다.