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

MySQL에서 마지막 슬래시 뒤의 텍스트를 추출하는 방법 (substring_index 활용법)

MySQL에서 문자열의 마지막 슬래시(/) 뒤에 있는 텍스트를 가져오려면 substring_index() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 나누어 원하는 부분만 손쉽게 추출할 수 있는 유용한 문자열 함수입니다.

substring_index() 기본 문법

기본적인 사용 문법은 다음과 같습니다.

SELECT substring_index(컬럼명, '/', -1) AS 별칭 FROM 테이블명;

여기서 세 번째 인자인 -1은 뒤에서부터 첫 번째로 나타나는 구분자를 기준으로 그 오른쪽(뒤쪽) 텍스트를 반환하라는 의미입니다. 만약 양수를 지정하면 앞에서부터 해당 개수만큼의 구분자를 기준으로 왼쪽 텍스트를 반환합니다.

예제 테이블 생성

개념을 쉽게 이해하기 위해 실습용 테이블을 먼저 만들어 보겠습니다. 아래는 테이블 생성 쿼리입니다.

mysql> create table selectTextAfterLastSlashDemo
   - > (
   - > UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > UserPathDirectory varchar(200)
   - > );
Query OK, 0 rows affected (0.54 sec)

샘플 데이터 삽입

insert 명령을 사용하여 경로 데이터가 담긴 샘플 레코드를 여러 건 입력합니다.

mysql> insert into selectTextAfterLastSlashDemo(UserPathDirectory)
values('C:/MyFolder1/MyEntityFramework');
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectTextAfterLastSlashDemo(UserPathDirectory)
values('D:/MySpringFrameworkDemo');
Query OK, 1 row affected (0.14 sec)
mysql> insert into selectTextAfterLastSlashDemo(UserPathDirectory)
values('E:/Java/MyRootFolder/Source/AllHibernateDemo');
Query OK, 1 row affected (0.14 sec)
mysql> insert into selectTextAfterLastSlashDemo(UserPathDirectory) values('C:/Program
Files/MySQL/Server 8.0');
Query OK, 1 row affected (0.20 sec)
mysql> insert into selectTextAfterLastSlashDemo(UserPathDirectory)
values('C:/John/Folder1/Folder2');
Query OK, 1 row affected (0.10 sec)

저장된 데이터 확인

select 문을 사용하여 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from selectTextAfterLastSlashDemo;

다음은 컬럼에 저장된 경로 값을 보여주는 출력 결과입니다.

+--------+----------------------------------------------+
| UserId | UserPathDirectory                            |
+--------+----------------------------------------------+
|     1 | C:/MyFolder1/MyEntityFramework                |
|     2 | D:/MySpringFrameworkDemo                      |
|     3 | E:/Java/MyRootFolder/Source/AllHibernateDemo  |
|     4 | C:/Program Files/MySQL/Server 8.0             |
|     5 | C:/John/Folder1/Folder2                       |
+--------+----------------------------------------------+
5 rows in set (0.00 sec)

마지막 슬래시 뒤의 텍스트 추출하기

이제 마지막 슬래시 뒤의 텍스트를 가져오는 실제 쿼리입니다.

mysql> select substring_index(UserPathDirectory,'/',-1) as TextAfterLastSlash from
selectTextAfterLastSlashDemo;

실행 결과, 각 경로에서 마지막 슬래시 뒤의 텍스트가 정상적으로 추출된 것을 확인할 수 있습니다.

+-----------------------+
| TextAfterLastSlash    |
+-----------------------+
| MyEntityFramework     |
| MySpringFrameworkDemo |
| AllHibernateDemo      |
| Server 8.0            |
| Folder2               |
+-----------------------+
5 rows in set (0.00 sec)

정리

substring_index(컬럼명, '/', -1) 형태로 사용하면 파일 경로나 URL처럼 슬래시로 구분된 문자열에서 마지막 요소(파일명, 폴더명 등)를 간단하게 추출할 수 있습니다. 반대로 첫 번째 요소가 필요하다면 -1 대신 1을 사용하면 되며, 이 함수는 WHERE 절이나 JOIN 조건 등 다양한 곳에서도 활용 가능하므로 실무에서 매우 자주 쓰이는 패턴입니다.