SUBSTRING
함수는 MSSQL에서 문자열이나 텍스트 데이터를 조작할 때 유용하게 사용되는 함수입니다. 이 글에서는 SUBSTRING
함수의 기본적인 사용법부터 다양한 활용 사례, 주의할 점 등을 다룰 것입니다.
1. SUBSTRING
함수란?
SUBSTRING
함수는 문자열에서 특정 부분을 잘라내어 반환하는 함수입니다. SUBSTRING
함수는 다음과 같은 형식으로 사용됩니다.
SUBSTRING(expression, start, length)
- expression: 문자열이나 텍스트 데이터가 입력됩니다.
- start: 추출을 시작할 위치로, 1부터 시작하는 인덱스입니다.
- length: 추출할 문자 수입니다.
2. 기본 사용법
예제 1: 간단한 사용법
SELECT SUBSTRING('Hello World', 1, 5) AS Result;
위 쿼리에서는 'Hello World'
라는 문자열에서 시작 위치 1
에서부터 5
개의 문자를 추출하여 반환합니다. 결과는 'Hello'
입니다.
예제 2: 실제 컬럼에 적용하기
SELECT SUBSTRING(EmployeeName, 1, 3) AS FirstThreeChars
FROM Employees;
위 예제에서는 Employees
테이블의 EmployeeName
컬럼에서 첫 3개의 문자만 추출하여 FirstThreeChars
라는 별칭으로 반환합니다.
3. 실전 활용 예제
(1) 전화번호 마스킹
고객 데이터에서 전화번호 일부를 마스킹해야 할 때 SUBSTRING
을 활용할 수 있습니다.
SELECT
SUBSTRING(PhoneNumber, 1, 3) + '****' + SUBSTRING(PhoneNumber, 8, 4) AS MaskedPhone
FROM Customers;
이 쿼리는 전화번호 중간 부분을 ****
로 대체하여 개인정보 보호를 위한 마스킹을 수행합니다.
(2) 이메일 도메인 추출
이메일 주소에서 도메인 부분만 추출해야 하는 경우에도 SUBSTRING
을 사용할 수 있습니다.
SELECT
SUBSTRING(Email, CHARINDEX('@', Email) + 1, LEN(Email)) AS Domain
FROM Users;
여기서는 CHARINDEX
함수를 함께 사용하여 '@'
뒤의 문자열을 추출합니다.
4. 주의사항 및 팁
(1) start
와 length
값 주의
start
값이 1보다 작거나, length
값이 음수일 경우 오류가 발생합니다. 또한, start
값이 문자열 길이를 초과할 경우 빈 문자열을 반환합니다.
(2) 다국어 및 유니코드 처리
다국어 문자열을 다룰 때는 SUBSTRING
이 문자 단위가 아닌 바이트 단위로 인식할 수 있습니다. 유니코드 데이터에서는 SUBSTRING
대신 NCHAR
을 사용하는 것도 고려해야 합니다.
5. SUBSTRING
과 다른 함수의 비교
LEFT
와 RIGHT
함수와 유사하게 문자열을 추출할 수 있지만, SUBSTRING
은 특정 위치에서 원하는 만큼의 길이를 지정할 수 있는 점에서 더 유연합니다.
예제 비교: LEFT
, RIGHT
, SUBSTRING
LEFT
: 문자열 왼쪽에서 추출SELECT LEFT('Hello World', 5) AS LeftResult; -- 결과: 'Hello'
RIGHT
: 문자열 오른쪽에서 추출SELECT RIGHT('Hello World', 5) AS RightResult; -- 결과: 'World'
SUBSTRING
: 원하는 위치에서 원하는 길이만큼 추출SELECT SUBSTRING('Hello World', 1, 5) AS SubstringResult; -- 결과: 'Hello'
6. 활용 예제
(1) 특정 구분자로 분리된 문자열 처리
콤마(,
)로 구분된 데이터를 개별 요소로 분리할 때 SUBSTRING
과 CHARINDEX
를 함께 사용하여 각 요소를 추출할 수 있습니다.
DECLARE @Text NVARCHAR(50) = 'Apple,Banana,Cherry';
SELECT
SUBSTRING(@Text, 1, CHARINDEX(',', @Text) - 1) AS FirstItem,
SUBSTRING(@Text, CHARINDEX(',', @Text) + 1, LEN(@Text) - CHARINDEX(',', @Text)) AS RemainingText;
위 쿼리는 첫 번째 콤마 위치를 기준으로 첫 번째 항목과 나머지 문자열을 나눕니다.
(2) 날짜 포맷팅
YYYY-MM-DD 형식의 날짜에서 년, 월, 일을 개별적으로 추출할 때 SUBSTRING
을 활용할 수 있습니다.
DECLARE @Date NVARCHAR(10) = '2024-11-01';
SELECT
SUBSTRING(@Date, 1, 4) AS Year,
SUBSTRING(@Date, 6, 2) AS Month,
SUBSTRING(@Date, 9, 2) AS Day;
결과적으로 각 부분을 별도로 추출하여 날짜 포맷을 변경하거나 계산에 활용할 수 있습니다.
7. 결론
SUBSTRING
함수는 MSSQL에서 문자열을 다룰 때 매우 유용한 함수로, 다양한 활용 가능성이 있습니다. 주어진 문자열에서 특정 부분을 추출하여 데이터 마스킹, 문자열 처리, 데이터 포맷팅 등 여러 시나리오에 활용할 수 있습니다. SUBSTRING
을 CHARINDEX
, LEN
등의 함수와 조합하면 더 복잡한 문자열 조작 작업을 수행할 수 있습니다.
'DataBase' 카테고리의 다른 글
MSSQL의 FORMAT 함수 가이드: 사용법, 대체 방법, 실전 사례 (2) | 2024.11.04 |
---|---|
[MSSQL] CHARINDEX 함수 가이드: 문자열 위치 찾기와 활용법 (0) | 2024.11.02 |
(번역)SQL Bulk Insert Command Examples (4) | 2024.11.01 |
MySQL에서 복합 유니크 인덱스: 다수의 인덱스와 하나의 인덱스를 비교하여 최적의 설계 방식 찾기 (0) | 2024.10.28 |
MySQL 파티셔닝(Partitioning)의 기본 개념과 필요성 (0) | 2024.10.26 |