MSSQL Split ( String_split 함수 )

개요

MSSQL Split 기능은 String_split 함수를 이용해서 구현할 수 있습니다. Split 결과는 테이블로 반환됩니다.

구문

STRING_SPLIT ( string , separator [ , enable_ordinal ] )

MSSQL Split 기본 예제

SELECT * 
FROM string_split('10.20.30.40.50', '.')
MSSQL STRING_SPLIT 기본 예제 결과

결과는 그림과 같습니다. 결과는 테이블로 나옵니다.

SPLIT 두번째, 세번째 등 예제

STRING_SPLIT 함수 세 번째 인수가 옵션인데, 1과 0이 들어갈 수 있습니다. 1을 주면 순서컬럼이 표시됩니다.
그래서 WHERE 절에 ordinal 컬럼을 조건으로 주면 특정한 INDEX 의 값을 찾을 수 있습니다.

SELECT * 
FROM STRING_SPLIT('10.20.30.40.50', '.', 1)
문자열 나누기 두번째, 세번째 값 뽑기

SPLIT 마지막 값 찾기 예제

Ordinal 컬럼을 조건으로 주되, 주어진 문자열에서 구분자가 몇 번 들어갔는지를 구해서 + 1을 해주면 마지막 index 의 값을 찾을 수 있습니다.

SELECT * 
FROM string_split('10.20.30.40.50', '.', 1)
WHERE ORDINAL = LEN('10.20.30.40.50') - LEN(REPLACE('10.20.30.40.50','.','')) +1
split 마지막 값 찾기 예제 결과

SPLIT Table 이용하기

결과를 테이블로 이용하려면 아래와 같이 WITH 절을 사용하거나, 테이블 변수를 사용하는 방법이 간단합니다.

WITH T AS (
  SELECT * 
  FROM string_split('10.20.30.40.50', '.', 1)
  ) 
SELECT * FROM T

-------------------------------------------------------
DECLARE @T TABLE (
  VAL VARCHAR(10)
, ORD INT
)
INSERT INTO @T ( VAL, ORD )
SELECT VALUE, ORDINAL
FROM string_split('10.20.30.40.50', '.', 1)

SELECT * FROM @T

MSSQL 문자열함수 26개 정리 바로가기
MSSQL String_Split 함수 MS 문서 링크

string_split 대체 함수 ( 2016 이전 버전 )

대체함수 링크

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다