1. SUBSTRING 기본 문법 + 예제
SUBSTRING(문자열, 시작위치, 길이)
문자열의 시작 위치부터 지정한 길이만큼 잘라 반환합니다.
※ MSSQL은 시작 위치가 1부터 시작합니다.
앞에서부터 자르기
SELECT SUBSTRING('HELLO WORLD', 1, 5);
결과: HELLO
1번째 위치부터 5글자 추출
특정 위치부터 자르기
SELECT SUBSTRING('HELLO WORLD', 7, 5);
결과: WORLD
길이 초과 시
SELECT SUBSTRING('HELLO', 3, 10);
결과: LLO
문자열 길이를 넘어가면 가능한 범위까지만 반환
2. MSSQL에서 뒤에서 자르기
MSSQL은 오라클과 달리 음수 인덱스를 지원하지 않습니다.
따라서 LEN 함수를 함께 사용해야 합니다.
뒤에서 5글자 자르기
SELECT SUBSTRING('HELLO WORLD', LEN('HELLO WORLD') - 4, 5);
결과: WORLD
3. 실전 활용 예제
주민번호 앞자리 추출
SELECT SUBSTRING(jumin_no, 1, 6) FROM member;
이메일 아이디 추출
SELECT SUBSTRING(email, 1, CHARINDEX('@', email) - 1) FROM member;
파일 확장자 추출
SELECT SUBSTRING(file_name, LEN(file_name) - CHARINDEX('.', REVERSE(file_name)) + 2, LEN(file_name))
FROM files;
4. 함께 쓰면 좋은 함수
MSSQL은 문자열 함수들을 조합해서 사용하는 것이 핵심입니다.
CHARINDEX (문자 위치 찾기)
SELECT CHARINDEX('O', 'HELLO WORLD');
결과: 5
SUBSTRING + CHARINDEX 조합
SELECT SUBSTRING('abc@naver.com', 1, CHARINDEX('@', 'abc@naver.com') - 1);
결과: abc
LEN (문자열 길이)
SELECT LEN('HELLO');
결과: 5
REPLACE (문자열 치환)
SELECT REPLACE('010-1234-5678', '-', '');
결과: 01012345678
LTRIM / RTRIM (공백 제거)
SELECT LTRIM(RTRIM(' HELLO '));
결과: HELLO
LEFT / RIGHT (간단한 자르기)
SELECT LEFT('HELLO WORLD', 5);
SELECT RIGHT('HELLO WORLD', 5);
결과:
HELLO
WORLD
→ 단순한 경우 SUBSTRING보다 더 직관적
5. PATINDEX (패턴 기반 위치 찾기)
MSSQL에서는 정규식 대신 제한적인 패턴 검색을 지원합니다.
SELECT PATINDEX('%[0-9]%', 'abc123');
결과: 4 (숫자가 처음 등장하는 위치 반환)
SELECT SUBSTRING('abc123def', PATINDEX('%[0-9]%', 'abc123def'), 3);
결과: 123 (숫자가 처음 등장하는 위치부터 3자리)
반응형
'DB > MSSQL' 카테고리의 다른 글
| MSSQL 날짜/시간 형변환 한눈에 정리 (0) | 2026.03.24 |
|---|---|
| MSSQL 테이블 복사하기 (0) | 2026.03.24 |
| MSSQL 테이블 목록 조회 (0) | 2025.03.27 |
| MSSQL 프로시저 내용 문자열 검색 조회 (0) | 2025.03.27 |