[MSSQL] 문자열 자르기 (SUBSTRING, LEFT, RIGHT)
- 데이터베이스/MSSQL
- 2021. 9. 4.
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"을 채워서 값의 길이를 맞출 때 사용할 수 있다.