
SQL Server에서 문자열을 자르기 위해서는 SUBSTRING, LEFT, RIGHT 세 가지 함수를 사용할 수 있다. 오라클에서는 SUBSTR 함수 하나로 위의 세 가지 함수 기능을 모두 할 수 있지만, SQL Server에서는 위의 세 가지 함수를 적절히 잘 사용해야 한다.

SUBSTRING("문자열", "시작위치", "길이") : 지정한 위치에서 지정한 문자열 길이만큼 자를 때 사용
LEFT("문자열", "길이") : 왼쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용
RIGHT("문자열", "길이") : 오른쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용
기본 사용법
■ SUBSTRING 함수
SELECT SUBSTRING('SQL Server 2019', 1, 3) AS str1
, SUBSTRING('SQL Server 2019', 5, 6) AS str2
, SUBSTRING('SQL Server 2019', 12, 4) AS str3

SUBSTRING 함수는 문자열을 자를 때 사용하는 대표 함수이다. 자를 위치를 지정하여 원하는 길이만큼 문자열을 자를 수 있으며, CHARINDEX 함수를 사용하여 특정 문자를 찾은 후 해당 문자열을 자를 수 있다.
■ LEFT 함수
SELECT LEFT('SQL Server 2019', 3) AS str1
, LEFT('SQL Server 2019', 10) AS str2

왼쪽에서부터 특정 길이만큼 문자열을 자를 때 사용한다. SUBSTRING("문자열", 1, "길이")와 동일한 결과를 얻을 수 있기 때문에 취향에 맞게 사용하면 된다.
■ RIGHT 함수
SELECT RIGHT('SQL Server 2019', 4) AS str1
, RIGHT('SQL Server 2019', 11) AS str2

SUBSTRING 함수를 사용하여 오른쪽에서부터 문자열을 자르기 쉽지 않기 때문에, 오른쪽에서 부터 원하는 길이의 문자열을 자를 때 많이 사용한다.
고급 사용법
■ 특정 문자 위치에서 자르기 (CHARINDEX)
DECLARE @str VARCHAR(20) = 'MSSQL,MySQL'
SELECT SUBSTRING(@str, CHARINDEX(',', @str) + 1, LEN(@str)) AS result

CHARINDEX 함수를 사용하여 특정 문자의 위치를 찾은 후 해당 위치부터 문자열을 자르는 예제이다. 자주 사용하는 방법이니 알아두면 좋다.
■ 왼쪽 "0"으로 채우기 (LPAD)
DECLARE @seq INT = 1
SELECT RIGHT('000' + CAST(@seq AS VARCHAR(3)), 3) AS lpad1
, RIGHT('0000' + CAST(@seq AS VARCHAR(4)), 4) AS lpad2

SQL Server에서는 LPAD 함수가 없기 때문에 RIGHT 함수를 사용하여 숫자 앞에 "0"을 채워서 값의 길이를 맞출 때 사용할 수 있다.
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] 중복 제거 방법 (DISTINCT) (0) | 2022.10.28 |
---|---|
[MSSQL] 문자열 합치기 (CONCAT, +) (0) | 2022.07.28 |
[MSSQL] CASE WHEN 표현식 사용법 (DECODE, IF) (0) | 2022.07.25 |
[MSSQL] 현재시간 GETDATE()와 SYSDATETIME() 차이 (0) | 2022.07.19 |
[MSSQL] 이전 행, 다음 행 값 가져오기 (LAG, LEAD) (0) | 2022.07.19 |
댓글