본문 바로가기
  • [성공하는 개발자] - Developer
DataBase/MSSQL

[MSSQL] 문자열 자르기 (SUBSTRING, LEFT, RIGHT)

by Sein-JH 2022. 7. 25.
728x90

 

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"을 채워서 값의 길이를 맞출 때 사용할 수 있다.

 

참고 : https://gent.tistory.com/436?category=874679

댓글