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

MySQL에서 파일 경로 열의 왼쪽 부분 문자열 추출하기 - 파일명을 제외한 전체 디렉터리 경로 표시 방법

LEFT()와 SUBSTRING_INDEX()를 활용한 파일 경로 추출

파일 경로가 저장된 열에서 왼쪽 부분 문자열(디렉터리 경로)을 추출하려면 LEFT() 함수와 SUBSTRING_INDEX() 함수를 함께 사용하면 됩니다.

예를 들어 다음과 같은 파일 경로가 있다고 가정해 보겠습니다.

"/MyFile/JavaProgram/Hello.java"

여기서 우리가 원하는 결과는 파일명을 제외한 나머지 전체 경로입니다. 즉, 아래와 같은 출력을 얻는 것이 목표입니다.

/MyFile/JavaProgram/

이제 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 테이블을 생성합니다.

mysql> create table DemoTable
(
    FileLocation text
);
Query OK, 0 rows affected (0.57 sec)

2단계: 데이터 삽입

INSERT 명령을 사용하여 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('/MyFile/JavaProgram/Hello.java');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('/C/AllPrograms/animation.gif');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('/E/FavFile/ChatProgram.java');
Query OK, 1 row affected (0.18 sec)

3단계: 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------------------------------+
| FileLocation                   |
+--------------------------------+
| /MyFile/JavaProgram/Hello.java |
| /C/AllPrograms/animation.gif   |
| /E/FavFile/ChatProgram.java    |
+--------------------------------+
3 rows in set (0.00 sec)

4단계: 파일명을 제외한 경로 추출 쿼리 실행

다음은 MySQL에서 왼쪽 부분 문자열(디렉터리 경로)을 가져오는 쿼리입니다.

mysql> select left(FileLocation,char_length(FileLocation)-char_length(substring_index(FileLocation,'/',-1))) from DemoTable;

쿼리 동작 원리

이 쿼리의 핵심 로직은 다음과 같습니다.

SUBSTRING_INDEX(FileLocation, '/', -1) — 마지막 슬래시(/) 뒤에 있는 문자열, 즉 파일명만 추출합니다.

CHAR_LENGTH() — 전체 경로 길이에서 파일명 길이를 빼면 순수하게 디렉터리 경로의 길이가 계산됩니다.

LEFT() — 계산된 길이만큼 왼쪽부터 문자열을 잘라내어 파일명을 제외한 전체 경로를 반환합니다.

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

+------------------------------------------------------------------------------------------------+
| left(FileLocation,char_length(FileLocation)-char_length(substring_index(FileLocation,'/',-1))) |
+------------------------------------------------------------------------------------------------+
| /MyFile/JavaProgram/                                                                           |
| /C/AllPrograms/                                                                                |
| /E/FavFile/                                                                                    |
+------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

결과를 보면 각 행에서 파일명이 제거되고 디렉터리 경로만 깔끔하게 표시된 것을 확인할 수 있습니다. 이 방법은 확장자나 파일명 길이와 관계없이 어떤 파일 경로에도 동일하게 적용할 수 있어 매우 유용합니다.