이 글에서는 SQL Server의 SUBSTRING 함수를 사용하여 지정한 문자열에서 원하는 길이만큼 부분 문자열을 추출하는 방법을 자세히 살펴봅니다.
설명
SUBSTRING 함수는 SQL Server에서 입력 문자열의 특정 위치부터 시작해 지정한 길이만큼의 부분 문자열을 추출할 때 사용하는 문자열 함수입니다. 데이터 정제나 코드 파싱 등 실무에서 매우 자주 활용됩니다.
구문
SQL Server에서 SUBSTRING 함수를 사용할 때는 아래와 같은 구문을 따릅니다.
SUBSTRING(string, start, length)
매개변수 설명:
- string: 추출 대상이 되는 문자열, 변수 또는 테이블의 열(컬럼)입니다.
- start: 부분 문자열 반환을 시작할 위치를 지정하는 정수입니다. 문자열의 첫 번째 문자 위치는 0이 아니라 1이라는 점에 유의하세요.
- length: 문자열에서 반환할 부분 문자열의 길이(문자 수)를 지정하는 양의 정수입니다.
참고 사항:
- length 매개변수가 음수 값이면 SUBSTRING 함수는 오류를 발생시킵니다.
- start + length가 문자열 전체 길이보다 크면, start 위치부터 문자열 끝까지 남은 모든 문자가 그대로 반환됩니다.
- 문자열의 앞부분이나 뒷부분만 추출할 경우에는 LEFT, RIGHT 함수를 함께 활용하는 것이 더 간편합니다.
- SUBSTRING 함수는 SQL Server 2017, 2016, 2014, 2012, 2008 R2, 2008, 2005 이후 버전에서 모두 사용할 수 있습니다.
예제
SUBSTRING 함수의 기본적인 사용 예시를 확인해 보겠습니다.
SELECT SUBSTRING('QuanTriMang.com', 1, 4);
-- 결과: 'Quan'
SELECT SUBSTRING('QuanTriMang.com', 5, 3);
-- 결과: 'Tri'
SELECT SUBSTRING('QuanTriMang.com', 5, 15);
-- 결과: 'TriMang.com'
첫 번째 예제는 1번째 위치부터 4글자('Quan')를, 두 번째 예제는 5번째 위치부터 3글자('Tri')를 추출합니다. 세 번째 예제처럼 요청한 길이가 문자열의 남은 길이보다 크더라도 오류 없이 끝까지 반환되는 것을 확인할 수 있습니다.
실무 활용 예시
실제 업무에서는 테이블 열에 직접 적용하는 경우가 많습니다. 예를 들어 이메일 주소에서 아이디 부분만 추출할 수 있습니다.
SELECT SUBSTRING(email, 1, CHARINDEX('@', email) - 1) AS username
FROM users;