URL과 같은 문자열에서 마지막 인덱스, 즉 마지막 구분자 뒤에 있는 부분을 추출하려면 MySQL의 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나누고, 원하는 위치의 값을 반환합니다.
SUBSTRING_INDEX() 기본 문법
SELECT yourColumnName1,...N,SUBSTRING_INDEX(yourColumnName,'yourDelimiter',-1) as anyVariableName from yourTableName;
세 번째 인자가 -1이면 구분자가 마지막으로 등장한 위치를 기준으로 그 오른쪽에 있는 문자열을 반환합니다. 반대로 양수를 입력하면 왼쪽부터 해당 개수만큼의 문자열을 가져오게 됩니다.
예제 테이블 생성
위 문법을 실제로 이해하기 위해 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table LastIndexString
-> (
-> Id int,
-> yourURL text
-> );
Query OK, 0 rows affected (0.89 sec)
샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into LastIndexString values(1,'https://www.example.com/home.html');
Query OK, 1 row affected (0.26 sec)
mysql> insert into LastIndexString values(2,'https://exampledemo.example.com/index.jsp');
Query OK, 1 row affected (0.18 sec)
mysql> insert into LastIndexString values(3,'https://www.example.com/question/LastString');
Query OK, 1 row affected (0.18 sec)
저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from LastIndexString;
다음은 URL 문자열이 출력된 결과입니다.
+------+---------------------------------------------+
| Id | yourURL |
+------+---------------------------------------------+
| 1 | https://www.example.com/home.html |
| 2 | https://exampledemo.example.com/index.jsp |
| 3 | https://www.example.com/question/LastString |
+------+---------------------------------------------+
3 rows in set (0.00 sec)
URL에서 마지막 문자열 추출하기
URL 문자열에서 마지막 인덱스 문자열을 가져오는 쿼리는 다음과 같습니다. 구분자로 슬래시('/')를 지정하고 인자 값을 -1로 설정했습니다.
mysql> select Id, substring_index(yourURL,'/',-1) as LastStringFromURL from LastIndexString;
실행 결과, 각 URL에서 마지막 슬래시 뒤에 있는 부분이 정상적으로 추출되어 출력됩니다.
+------+-------------------+
| Id | LastStringFromURL |
+------+-------------------+
| 1 | home.html |
| 2 | index.jsp |
| 3 | LastString |
+------+-------------------+
3 rows in set (0.00 sec)
이처럼 SUBSTRING_INDEX() 함수에 음수 인자를 활용하면 파일명이나 경로의 마지막 세그먼트처럼 URL의 마지막 부분을 별도의 복잡한 처리 없이 손쉽게 추출할 수 있습니다.