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

MySQL 쿼리로 문자열의 일부를 자르는 방법 – SUBSTRING_INDEX() 완벽 가이드

MySQL에서 문자열의 특정 부분을 잘라내고 싶다면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 나누어 원하는 부분만 손쉽게 추출할 수 있게 해줍니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
-> (
-> StudentId varchar(100)
-> );
Query OK, 0 rows affected (0.60 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values('STU-1011');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values('STU-95968686');
Query OK, 1 row affected (0.17 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+--------------+
| StudentId |
+--------------+
| STU-1011 |
| STU-95968686 |
+--------------+
2 rows in set (0.00 sec)

4. 하이픈(-)을 기준으로 문자열 자르기

다음은 하이픈(-) 뒤에 있는 문자열 부분을 추출하는 쿼리입니다. INSTR() 함수로 하이픈의 위치를 찾은 후, SUBSTRING()으로 그 이후의 문자열을 가져오고, 마지막으로 SUBSTRING_INDEX()로 공백을 기준으로 첫 번째 부분만 반환합니다.

mysql> select substring_index(substring(StudentId, instr(StudentId, "-")+1), " ", 1) from DemoTable;

쿼리를 실행하면 하이픈 뒤의 문자열이 아래와 같이 출력됩니다.

+------------------------------------------------------------------------+
| substring_index(substring(StudentId, instr(StudentId, "-")+1), " ", 1) |
+------------------------------------------------------------------------+
| 1011 |
| 95968686 |
+------------------------------------------------------------------------+
2 rows in set (0.02 sec)

추가 팁: SUBSTRING_INDEX() 단독 사용

하이픈 앞의 접두사('STU')를 추출하고 싶다면 SUBSTRING_INDEX() 함수 하나만으로도 간단히 처리할 수 있습니다.

mysql> select substring_index(StudentId, "-", 1) from DemoTable;

반대로 음수 인덱스를 사용하면 구분자 기준 오른쪽(뒤쪽) 값을 추출할 수 있습니다.

mysql> select substring_index(StudentId, "-", -1) from DemoTable;

이처럼 MySQL에서는 SUBSTRING_INDEX(), SUBSTRING(), INSTR() 등의 문자열 함수를 조합하여 다양한 형태의 문자열 가공 작업을 효율적으로 수행할 수 있습니다.