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

MySQL에서 쉼표로 구분된 목록의 첫 번째 요소 추출하기 – SUBSTRING_INDEX() 활용법

MySQL에서 쉼표로 구분된 목록의 첫 번째 요소 추출하기

쉼표(,)로 구분된 목록(CSV 값)에서 첫 번째 요소만 추출하고 싶다면 MySQL의 SUBSTRING_INDEX() 함수를 사용하면 간단하게 해결할 수 있습니다. 이 함수는 지정한 구분자를 기준으로 문자열을 잘라 원하는 부분만 반환해 줍니다.

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    CSV_Value varchar(200)
);
Query OK, 0 rows affected (0.81 sec)

다음은 INSERT 문을 사용해 테이블에 데이터를 삽입하는 쿼리입니다. 여기서는 쉼표로 구분된 정수 목록 형태의 값을 저장했습니다.

mysql> insert into DemoTable values('10,20,50,80');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('100,21,51,43');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('1,56,103,1090');
Query OK, 1 row affected (0.26 sec)

SELECT 문으로 테이블에 저장된 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------------+
| CSV_Value     |
+---------------+
| 10,20,50,80   |
| 100,21,51,43  |
| 1,56,103,1090 |
+---------------+
3 rows in set (0.00 sec)

SUBSTRING_INDEX()로 첫 번째 요소 선택하기

쉼표로 구분된 목록에서 첫 번째 요소를 가져오려면 아래와 같이 SUBSTRING_INDEX() 함수를 사용합니다. 세 번째 인자로 1을 전달하면 첫 번째 구분자 앞까지의 문자열, 즉 첫 번째 요소가 반환됩니다.

mysql> select SUBSTRING_INDEX(CSV_Value,',',1) AS FIRST_ELEMENT from DemoTable;

실행 결과는 다음과 같습니다. 각 행의 목록에서 첫 번째 요소만 출력된 것을 확인할 수 있습니다.

+---------------+
| FIRST_ELEMENT |
+---------------+
| 10            |
| 100           |
| 1             |
+---------------+
3 rows in set (0.03 sec)

참고: SUBSTRING_INDEX(문자열, 구분자, count) 형식으로 사용하며, count가 양수이면 왼쪽(앞)에서부터, 음수이면 오른쪽(뒤)에서부터 해당 위치 앞까지의 문자열을 반환합니다. 예를 들어 목록의 마지막 요소를 얻고 싶다면 count 자리에 -1을 넣으면 됩니다.