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() 등의 문자열 함수를 조합하여 다양한 형태의 문자열 가공 작업을 효율적으로 수행할 수 있습니다.