구조화된 문자열 구문 분석을 위한 MySQL의 SUBSTRING_INDEX() 마스터하기
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
SUBSTRING_INDEX()
는 구분 기호 발생 및 방향에 따라 부분 문자열을 추출합니다.- 양수
count
는 시작 부분부터 추출하고, 음수는 끝 부분부터 추출합니다. - SQL 쿼리에서 이메일, URL 및 파일 이름을 구문 분석하는 데 유용합니다.
MySQL의 SUBSTRING_INDEX()
함수는 지정된 구분 기호와 개수를 기반으로 더 큰 문자열에서 부분 문자열을 추출하는 강력한 도구입니다. 특히 URL, 이메일 주소 및 파일 경로와 같은 구조화된 문자열을 구문 분석하는 데 유용합니다.
구문
SUBSTRING_INDEX(str, delimiter, count)
str
: 부분 문자열을 추출할 원본 문자열입니다.delimiter
: 추출 경계를 정의하는 구분 기호 문자열입니다.count
: 구분 기호를 검색할 횟수를 나타내는 정수입니다.count
가 양수이면 함수는str
의 시작 부분부터delimiter
의count
번째 발생까지의 부분 문자열을 반환합니다.count
가 음수이면str
의 끝 부분부터delimiter
의count
번째 발생까지의 부분 문자열을 반환합니다.
예제
1. 양수 Count를 사용하여 부분 문자열 추출
SELECT SUBSTRING_INDEX('www.example.com', '.', 2); -- Output: 'www.example'
이 쿼리는 문자열의 시작 부분부터 마침표(.
)의 두 번째 발생까지의 부분 문자열을 추출하여 'www.example'
을 생성합니다.
2. 음수 Count를 사용하여 부분 문자열 추출
SELECT SUBSTRING_INDEX('www.example.com', '.', -2); -- Output: 'example.com'
여기서 함수는 문자열의 끝 부분부터 마침표의 두 번째 발생까지의 부분 문자열을 추출하여 'example.com'
을 생성합니다.
3. 이메일 주소에서 도메인 추출
SELECT SUBSTRING_INDEX('user@example.com', '@', -1); -- Output: 'example.com'
이 예제에서는 @
기호를 구분 기호로 지정하고 음수 count를 사용하여 이메일 주소의 도메인 부분을 추출하는 방법을 보여줍니다.
4. 파일 확장자 추출
SELECT SUBSTRING_INDEX('report.final.pdf', '.', -1); -- Output: 'pdf'
이 쿼리는 마침표를 구분 기호로 사용하고 음수 count를 사용하여 파일 이름에서 파일 확장자 'pdf'
를 추출합니다.
동작 참고 사항
- 지정된
delimiter
가str
에서 발견되지 않으면 함수는 전체str
을 반환합니다. count
가 0이면 함수는 빈 문자열을 반환합니다.count
의 절대값이str
에서delimiter
발생 횟수를 초과하면 함수는 전체str
을 반환합니다.
실제 응용 프로그램
SUBSTRING_INDEX()
함수는 다재다능하며 다양한 시나리오에서 적용할 수 있습니다.
- URL 구문 분석: 도메인 이름 또는 특정 경로 세그먼트 추출.
- 이메일 주소 처리: 사용자 이름과 도메인 분리.
- 파일 경로 처리: 파일 이름 또는 확장자 분리.
- 구분된 데이터 분석: 일관된 구분 기호가 있는 문자열에서 특정 필드 추출.
다른 함수와 결합
더 복잡한 문자열 조작을 위해 SUBSTRING_INDEX()
를 다른 MySQL 문자열 함수와 결합할 수 있습니다.
REPLACE()
: 추출된 부분 문자열의 일부를 대체합니다.CONCAT()
: 추가 문자열을 추가하거나 앞에 추가합니다.LEFT()
/RIGHT()
: 추출된 부분 문자열을 추가로 구체화합니다.
예를 들어 이메일 주소에서 사용자 이름을 추출하려면 다음과 같이 합니다.
SELECT SUBSTRING_INDEX('user@example.com', '@', 1); -- Output: 'user'
결론
SUBSTRING_INDEX()
함수는 문자열 구문 분석 작업에 유용한 MySQL의 자산입니다. 구문과 동작을 이해하면 구조화된 데이터에서 의미 있는 부분 문자열을 효율적으로 추출하여 데이터 처리 기능을 향상시킬 수 있습니다.
FAQs
예, 구분 기호가 없으면 전체 원본 문자열을 반환합니다.
함수는 빈 문자열을 반환합니다.
아니요, 일관된 구분 기호가 있는 평면 문자열에 가장 적합합니다.
저희는 백엔드 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 비용을 지불하십시오. 요청도 없고, 요금도 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼만 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리할 수 있는 자동 확장.
- 운영 오버헤드 제로 - 구축에만 집중하십시오.
문서에서 자세히 알아보십시오!
X에서 저희를 팔로우하세요: @LeapcellHQ