MySQL `SUBSTRING()` 함수 이해
Takashi Yamamoto
Infrastructure Engineer · Leapcell

Key Takeaways
SUBSTRING()
함수는 위치와 길이에 따라 문자열의 일부를 추출합니다.- 유연한 추출을 위해 양수 및 음수 시작 위치를 모두 지원합니다.
- 데이터 정리, 텍스트 파싱 및 약어 생성에 유용합니다.
MySQL의 SUBSTRING()
함수는 문자열의 특정 부분을 추출하는 강력한 도구입니다. 이는 출력 포맷팅, 구조화된 텍스트 파싱 또는 데이터 필드 정리와 같은 데이터 처리 작업에 일반적으로 사용됩니다.
구문
MySQL은 SUBSTRING()
함수에 대해 두 가지 구문을 제공합니다.
SUBSTRING(string, start, length)
또는
SUBSTRING(string FROM start FOR length)
string
: 추출할 소스 문자열입니다.start
: 추출 시작 위치입니다. 양수 값은 시작부터 계산(1부터 시작하는 인덱스)하고, 음수 값은 끝부터 계산합니다.length
(선택 사항): 추출할 문자 수입니다. 생략하면 함수는 시작 위치부터 문자열 끝까지의 부분 문자열을 반환합니다.
주요 동작
- 1부터 시작하는 인덱싱: 위치는 1부터 시작합니다. 예를 들어, 위치 1은 첫 번째 문자를 나타냅니다.
- 음수 시작 값: 음수
start
값은 문자열의 끝부터 계산합니다. 예를 들어,-1
은 마지막 문자를 나타냅니다. - Length 매개변수: 지정된
length
가start
위치에서 남은 문자 수를 초과하면 함수는 오류 없이start
위치에서 문자열 끝까지의 부분 문자열을 반환합니다. - 0 시작 값:
start
값을 0으로 지정하면 빈 문자열이 됩니다. - NULL 처리:
string
이NULL
인 경우 함수는NULL
을 반환합니다.
실제 예제
1. 특정 위치에서 부분 문자열 추출
SELECT SUBSTRING('Hello, World!', 8);
결과: 'World!'
이것은 8번째 문자부터 문자열 끝까지의 부분 문자열을 추출합니다.
2. 특정 길이로 부분 문자열 추출
SELECT SUBSTRING('Database Management', 10, 6);
결과: 'Manage'
이것은 10번째 문자부터 6자를 추출합니다.
3. 음수 시작 값 사용
SELECT SUBSTRING('Hello, World!', -6);
결과: 'World!'
이것은 문자열의 마지막 6자를 추출합니다.
4. 테이블 열에서 추출
customers
테이블에 customer_name
열이 있다고 가정합니다.
SELECT SUBSTRING(customer_name, 1, 5) AS short_name FROM customers;
이것은 각 고객 이름의 처음 5자를 검색하며, 약어 또는 코드를 만드는 데 유용할 수 있습니다.
5. FROM
및 FOR
구문으로 추출
SELECT SUBSTRING('Learning SQL' FROM 10 FOR 3);
결과: 'SQL'
이 대체 구문은 표준 구문과 동일한 결과를 얻습니다.
일반적인 사용 사례
- 데이터 정리: 문자열에서 원치 않는 접두사 또는 접미사를 제거합니다.
- 구조화된 데이터 파싱: 알려진 형식이 있는 문자열에서 특정 필드를 추출합니다.
- 약어 생성: 이름 또는 제목에서 짧은 코드 또는 머리글자를 만듭니다.
- 텍스트 분석: 분석을 위해 더 큰 텍스트 필드에서 의미 있는 세그먼트를 추출합니다.
모범 사례
- 입력 유효성 검사: 예기치 않은 결과를 피하기 위해
start
및length
매개변수가 문자열의 범위를 벗어나지 않도록 합니다. - NULL 처리: 데이터의
NULL
값에 대비하고IFNULL()
과 같은 함수를 사용하여 정상적으로 관리합니다. - 다른 함수와 결합: 보다 동적인 하위 문자열 추출을 위해
LOCATE()
또는CHAR_LENGTH()
와 같은 함수와 함께SUBSTRING()
을 사용합니다. - 성능 고려 사항: 대규모 데이터 세트로 작업할 때 문자열 조작 함수의 성능에 미치는 영향을 염두에 두십시오.
관련 함수
SUBSTR()
및MID()
:SUBSTRING()
의 동의어입니다. 기능적으로 동일합니다.SUBSTRING_INDEX()
: 지정된 횟수만큼 구분 기호가 나타나기 전에 문자열에서 하위 문자열을 추출합니다.LEFT()
및RIGHT()
: 문자열의 시작 또는 끝에서 지정된 문자 수를 각각 추출합니다.REGEXP_SUBSTR()
: 정규식 패턴과 일치하는 하위 문자열을 추출합니다.
SUBSTRING()
함수를 이해하고 효과적으로 활용함으로써 MySQL 쿼리 내에서 정확하고 효율적인 문자열 조작을 수행하여 데이터 처리 기능을 향상시킬 수 있습니다.
FAQs
예, 음수 시작 값은 문자열의 끝부터 계산합니다.
빈 문자열을 반환합니다.
아니요, 기능적으로 동일하며 상호 교환적으로 사용할 수 있습니다.
백엔드 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하십시오. 요청이나 요금이 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리하기 위한 자동 확장.
- 제로 운영 오버헤드 - 구축에만 집중하십시오.
문서에서 더 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ