DB/MSSQL

[MSSQL] 문자열 자르는 3가지 방법(substring, left/right, string_split)

고즈너키 2023. 5. 30. 15:54

Intro

안녕하세요! Plitche(플리체)입니다. :P
정확히 일치하는 문법은 아니지만 MSSQL에서 문자열을 자르는 3가지 방법에 대해서 소개시켜 드리겠습니다.

 

1. SUBSTRING 함수

SUBSTRING 함수는 문자열의 일부분을 추출하는 데 사용됩니다. 아래는 사용 방법입니다.

SUBSTRING(문자열, 시작 인덱스, 추출 길이)
  • 문자열: 추출하려는 원본 문자열입니다.
  • 시작 인덱스: 추출을 시작할 위치의 인덱스입니다. 첫 번째 문자의 인덱스는 1입니다.
  • 추출 길이: 추출할 문자의 개수입니다.

예를 들어, "Hello, World!" 문자열에서 "World!"를 추출하려면 다음과 같이 사용할 수 있습니다.

SELECT SUBSTRING('Hello, World!', 8, 6)

 

1-1. CHARINDEX 함수와 SUBSTRING 함수

CHARINDEX 함수는 특정 문자열 또는 문자의 인덱스를 반환합니다. 이를 활용하여 SUBSTRING 함수와 함께 사용하면 특정 문자열을 찾아서 추출할 수 있습니다.

예를 들어, "Hello, World!" 문자열에서 "," 이후의 문자열을 추출하려면 다음과 같이 사용할 수 있습니다.

SELECT SUBSTRING('Hello, World!', CHARINDEX(',', 'Hello, World!') + 1, LEN('Hello, World!'))

 

2. LEFT/RIGHT 함수

LEFT/RIGHT 함수는 문자열의 왼/오른쪽에서부터 지정된 길이까지 문자를 추출합니다. 사용 방법은 다음과 같습니다.

LEFT(문자열, 추출 길이)
RIGHT(문자열, 추출 길이)
  • 문자열: 추출하려는 원본 문자열입니다.
  • 추출 길이: 추출할 문자의 개수입니다.

예를 들어, "Hello, World!" 문자열에서 "Hello,"를 추출하려면 다음과 같이 LEFT 함수를 사용할 수 있습니다:

SELECT LEFT('Hello, World!', 6)

 

3. STRING_SPLIT 함수

STRING_SPLIT 함수SQL Server 2016 버전부터 도입된 함수로, 지정된 구분자를 기준으로 문자열을 분할하여 결과 집합으로 반환합니다. 이 함수는 문자열을 쉼표, 공백, 탭 등의 구분자로 분리하는 데 유용하게 사용될 수 있습니다.

STRING_SPLIT(문자열, 구분자)
  • 문자열: 분할하려는 원본 문자열입니다.
  • 구분자: 문자열을 분리하는 데 사용할 구분자입니다.

 

예를 들어, "Apple,Orange,Banana"라는 문자열을 쉼표로 분리하여 각 항목을 개별적으로 반환하려면 다음과 같이 STRING_SPLIT 함수를 사용할 수 있습니다.

SELECT value
FROM STRING_SPLIT('Apple,Orange,Banana', ',')

결과는 다음과 같이 세 개의 행으로 반환됩니다.

value
------
Apple
Orange
Banana

 

  • 중요한 점은 STRING_SPLIT 함수는 결과로서 테이블 형태로 반환되며, 각 분할된 값은 "value"라는 열에 저장됩니다. 따라서 결과를 활용하기 위해서는 결과를 임시 테이블이나 서브쿼리를 통해 사용해야 할 수도 있습니다.

  • 또한, STRING_SPLIT 함수는 공백을 기준으로 문자열을 분할하는 기능도 가지고 있습니다. 예를 들어, "Hello World"라는 문자열을 공백을 기준으로 분할하여 개별 단어를 반환하려면 다음과 같이 사용할 수 있습니다.
SELECT value
FROM STRING_SPLIT('Hello World', ' ')
value
------
Hello
World

 

정리

STRING_SPLIT 함수는 주어진 문자열을 간단하게 분할하는 데 유용하지만, 이 함수는 이전에 언급한 SUBSTRING, LEFT, RIGHT 함수와는 달리 문자열을 자르는 데에만 사용되며, 문자열의 일부를 추출하는 데에는 적합하지 않습니다.

'DB > MSSQL' 카테고리의 다른 글

[MSSQL] Stored Procedure(저장 프로시저)란?  (0) 2023.06.07