Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 쉼표를 구분자로 사용해 하나의 열을 두 개의 열로 분리하는 방법

MySQL에서 쉼표(,)로 구분된 데이터가 저장된 하나의 열을 두 개의 열로 나누려면 substring_index() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 잘라내어 원하는 부분만 반환해 주기 때문에, 이름과 성처럼 쉼표로 묶여 있는 값을 손쉽게 분리할 때 매우 유용합니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

테이블 생성

mysql> create table demo79
-> (
-> fullname varchar(50)
-> );
Query OK, 0 rows affected (0.64 sec)

insert 명령을 사용하여 테이블에 레코드를 삽입합니다.

데이터 삽입

mysql> insert into demo79 values("John,Smith");
Query OK, 1 row affected (0.09 sec)

mysql> insert into demo79 values("David,Miller");
Query OK, 1 row affected (0.11 sec)

mysql> insert into demo79 values("Chris,Brown");
Query OK, 1 row affected (0.07 sec)

select 문을 사용하여 테이블에 저장된 레코드를 확인합니다.

데이터 조회

mysql> select *from demo79;

위 쿼리는 다음과 같은 결과를 출력합니다.

출력 결과

+--------------+
| fullname     |
+--------------+
| John,Smith   |
| David,Miller |
| Chris,Brown  |
+--------------+
3 rows in set (0.00 sec)

다음은 쉼표를 구분자로 사용하여 하나의 열을 두 개의 열로 분리하는 쿼리입니다. substring_index()의 세 번째 인자에 양수를 넣으면 왼쪽부터, 음수를 넣으면 오른쪽부터 해당 위치까지의 문자열을 반환한다는 점을 기억하세요.

열 분리 쿼리

mysql> select
-> fullname,
-> substring_index(fullname, ',', 1) First_Name,
-> substring_index(fullname, ',', -1) Last_Name
-> from demo79;

위 쿼리는 다음과 같은 결과를 출력합니다.

출력 결과

+--------------+------------+-----------+
| fullname     | First_Name | Last_Name |
+--------------+------------+-----------+
| John,Smith   | John       | Smith     |
| David,Miller | David      | Miller    |
| Chris,Brown  | Chris      | Brown     |
+--------------+------------+-----------+
3 rows in set (0.00 sec)

실행 결과를 보면 쉼표 앞부분은 First_Name 열로, 뒷부분은 Last_Name 열로 성공적으로 분리된 것을 확인할 수 있습니다. 이처럼 substring_index() 함수를 활용하면 별도의 복잡한 처리 없이도 구분자로 나뉜 값을 간단하게 여러 열로 나눌 수 있습니다.