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

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

 

MSSQL 문자열 자르기

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

 

 

[MSSQL] CHARINDEX 함수, 특정 문자 찾기 (INSTR, IndexOf)

SQL Server에서 CHARINDEX() 함수는 문자열에서 특정 문자를 찾고 위치를 반환한는 함수이다. 오라클 SQL의 INSTR 함수와는 다르게 뒤에서 부터 찾는 기능은 지원하지 않고, 문자열의 앞부터 또는 특정

gent.tistory.com

 

[MSSQL] STRING_SPLIT 함수, 구분자로 자르기 (행으로 분리)

SQL Server 2016 부터 STRING_SPLIT() 함수가 추가되어 컬럼 문자열의 구분자를 행으로 분리 할 수 있다. 이전 버전까지 사용자 함수를 만들어서 사용했지는 STRING_SPLIT() 함수를 사용하면 쉽게 해결 된다.

gent.tistory.com

 

 

댓글

Designed by JB FACTORY