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

MySQL SUBSTRING_INDEX()로 URL 문자열의 마지막 인덱스 추출하기

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의 마지막 부분을 별도의 복잡한 처리 없이 손쉽게 추출할 수 있습니다.