MSSQL 문자열 자르기 함수(SUBSTRING, CHARINDEX, LEFT, RIGHT, STRING_SPLIT)

MSSQL에서 문자열을 자를 때 가장 많이 사용하는 핵심 함수 4가지를 SSMS에서 실행해 봤습니다. 상황에 따라 해당 함수를 사용하여 문자열을 자르고 추출하여 원하는 결과값을 얻을수 있다.

1. CHARINDEX

문자열의 첫 번째 문자를 위치부터 CHARINDEX 함수로 찾은 특정 문자의 위치 앞까지 문자열을 자른다.

SELECT SUBSTRING('lot-batch', CHARINDEX('-', 'lot-batch') + 1, LEN('lot-batch')) AS Result

예제 쿼리는 'lot-batch'라는 문자열에서 하이픈(-) 이후의 뒷부분, 즉 "batch"만 추출하는 방법이다.


결국 SUBSTRING('lot-batch, 5, 9)로 계산되어 결과값은 "batch" 라고 결과값을 얻을수 있습니다.

2. SUBSTRING (가장 만능)

문자열의 지정한 위치에서부터 원하는 길이만큼 잘라냅니다.

SELECT SUBSTRING('Hello World', 1, 5); -- 결과: 'Hello'
SELECT SUBSTRING('Hello World', 7, 5); -- 결과: 'World'

3. LEFT & RIGHT (방향 기준)

왼쪽(처음) 또는 오른쪽(끝)을 기준으로 원하는 글자 수만큼 잘라냅니다.

SELECT LEFT('20260624', 4);  -- 결과: '2026' (연도만 추출)
SELECT RIGHT('20260624', 2); -- 결과: '24'   (일자만 추출)

4. STRING_SPLIT (구분자 기준 분리)

특정 구분자(예: 쉼표, 공백)를 기준으로 문자열을 쪼개서 여러 개의 행(Table)으로 반환합니다. (SQL Server 2016 이상 지원)

SELECT value FROM STRING_SPLIT('사과,바나나,오렌지', ',');

실무 꿀팁 : 특정 단어를 기준으로 자르고 싶을 때

만약 이메일 주소(test@naver.com)에서 아이디만 추출하고 싶다면, @ 위치를 찾아내는 CHARINDEX함수와 LEFT 함수를 조합하면 됩니다.

SELECT LEFT('test@naver.com', CHARINDEX('@', 'test@naver.com') - 1);
-- 결과: 'test'




Comment

다음 이전