MySQL 단일 열에 여러 값 삽입하기
MySQL에서 여러 매개변수 값을 하나의 열에 삽입하려면 CONCAT_WS() 또는 CONCAT() 함수를 사용하면 됩니다. CONCAT_WS()는 구분자를 지정할 수 있어 여러 값을 하나의 문자열로 깔끔하게 결합하는 데 특히 유용합니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Name varchar(100),
Age int,
CountryName varchar(100),
PersonInformation text
);
Query OK, 0 rows affected (0.67 sec)INSERT 문과 CONCAT_WS() 활용하기
이제 일반적인 레코드 삽입에 사용하는 INSERT 명령어와 함께 CONCAT_WS()를 사용하여 여러 매개변수 값을 단일 열에 삽입해 보겠습니다. 아래 예시에서는 하이픈(-)을 구분자로 사용하여 이름, 나이, 국가명을 하나의 문자열로 결합합니다.
mysql> insert into DemoTable values('John',21,'US',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris',22,'AUS',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Bob',24,'UK',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.17 sec)결과 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------+------+-------------+-------------------+ | Name | Age | CountryName | PersonInformation | +-------+------+-------------+-------------------+ | John | 21 | US | John-21-US | | Chris | 22 | AUS | Chris-22-AUS | | Bob | 24 | UK | Bob-24-UK | +-------+------+-------------+-------------------+ 3 rows in set (0.00 sec)
CONCAT()와 CONCAT_WS()의 차이점
CONCAT() 함수는 인수로 전달된 문자열들을 그대로 이어 붙입니다. 반면 CONCAT_WS()는 첫 번째 인수로 구분자를 받아 각 값 사이에 자동으로 삽입해 주므로, 위 예제처럼 일정한 형식으로 데이터를 결합할 때 더 편리합니다.
참고로 CONCAT()를 사용할 경우 NULL 값이 하나라도 포함되면 전체 결과가 NULL이 되지만, CONCAT_WS()는 NULL 값을 건너뛰고 나머지 값들을 결합한다는 장점도 있습니다.