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

MySQL SUBSTRING_INDEX() 함수 완벽 가이드: 문법과 실전 예제

MySQL의 SUBSTRING_INDEX() 함수는 주어진 문자열에서 지정한 구분자(delimiter)가 N번째로 나타나기 전까지의 부분 문자열을 반환하는 함수입니다. 몇 번째 등장 위치를 기준으로 자를지는 인자를 통해 지정할 수 있으며, 이메일 도메인 추출, URL 파싱, CSV 형태 데이터 분리 등 다양한 상황에서 유용하게 활용됩니다.

문법(Syntax)

SUBSTRING_INDEX(Str, delim, count)

각 인자의 의미는 다음과 같습니다.

  • Str: 부분 문자열을 추출할 대상이 되는 원본 문자열입니다.
  • delim: 문자열 내에서 검색할 구분자입니다.
  • count: 구분자를 검색할 횟수입니다. 양수면 왼쪽(앞)에서부터, 음수면 오른쪽(뒤)에서부터 계산합니다.

사용 예제

예제 1: 두 번째 구분자 앞까지 반환

mysql> SELECT SUBSTRING_INDEX('My Name is Ram','a',2);
+-----------------------------------------+
| SUBSTRING_INDEX('My Name is Ram','a',2) |
+-----------------------------------------+
| My Name is R                            |
+-----------------------------------------+
1 row in set (0.00 sec)

위 쿼리는 구분자가 'a'이고 count가 2이므로, 두 번째 'a'가 등장하기 전까지의 부분 문자열인 'My Name is R'을 반환합니다.

예제 2: 첫 번째 구분자 앞까지 반환

mysql> SELECT SUBSTRING_INDEX('My Name is Ram','a',1);
+-----------------------------------------+
| SUBSTRING_INDEX('My Name is Ram','a',1) |
+-----------------------------------------+
| My N                                    |
+-----------------------------------------+
1 row in set (0.00 sec)

이번에는 count가 1이므로, 첫 번째 'a'가 등장하기 전까지의 부분 문자열인 'My N'이 결과로 반환됩니다.

참고: 음수 count 활용하기

count에 음수를 지정하면 문자열의 오른쪽 끝에서부터 구분자를 세어 그 앞부분을 반환합니다. 예를 들어 도메인 이름에서 최상위 도메인을 제외한 부분을 추출할 수 있습니다.

mysql> SELECT SUBSTRING_INDEX('www.example.com','.',-2);
+-------------------------------------------+
| SUBSTRING_INDEX('www.example.com','.',-2) |
+-------------------------------------------+
| example.com                               |
+-------------------------------------------+
1 row in set (0.00 sec)

이처럼 SUBSTRING_INDEX() 함수는 count 값을 조절함으로써 하나의 함수만으로 문자열의 앞부분과 뒷부분을 모두 유연하게 추출할 수 있는 강력한 문자열 처리 도구입니다.