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

SUBSTRING_INDEX() 함수로 문자열에서 동일한 구분 기호 사이의 부분 문자열 추출하기

중첩된 SUBSTRING_INDEX() 함수 활용하기

문자열 내에서 동일한 구분 기호 두 개 사이에 위치한 부분 문자열(substring)을 추출하려면, SUBSTRING_INDEX() 함수를 중첩(nested) 형태로 사용해야 합니다.

예제: 'www.tutorialspoint.com'에서 'tutorialspoint' 추출하기

예를 들어, 문자열 'www.tutorialspoint.com'에서 마침표(.)라는 동일한 구분 기호 두 개 사이에 있는 'tutorialspoint' 부분만 출력하고 싶다고 가정해 보겠습니다. 이 경우 SUBSTRING_INDEX() 함수를 다음과 같이 중첩하여 사용할 수 있습니다.

mysql> Select SUBSTRING_INDEX(SUBSTRING_INDEX('www.tutorialspoint.com','.',2),'.',-1)AS 'Nested SUBSTRING_INDEX';
+------------------------+
| Nested SUBSTRING_INDEX |
+------------------------+
| tutorialspoint |
+------------------------+
1 row in set (0.02 sec)

쿼리 작동 원리

이 쿼리가 어떻게 동작하는지 단계별로 살펴보겠습니다.

1단계: 내부의 SUBSTRING_INDEX('www.tutorialspoint.com','.',2)는 왼쪽부터 두 번째 마침표까지의 모든 문자를 반환합니다. 즉, 결과는 'www.tutorialspoint'입니다.

2단계: 외부의 SUBSTRING_INDEX(...,'.',-1)는 1단계의 결과에서 오른쪽부터 첫 번째 마침표 이전의 문자열을 반환합니다. 따라서 최종적으로 'tutorialspoint'가 출력됩니다.

이처럼 음수(-) 값을 사용하면 오른쪽에서부터, 양수(+) 값을 사용하면 왼쪽에서부터 구분 기호를 찾게 되므로, 중첩 활용을 통해 원하는 위치의 부분 문자열을 손쉽게 추출할 수 있습니다.