DB/MSSQL

[MSSQL] 구분자로 구분된 문자열 분리하기

MAKGA 2021. 6. 11. 21:13
320x100

1. CHARINDEX() 함수와 SUBSTRING함수를 이용한 분리 (2016버전 이전)

DECLARE @data VARCHAR(MAX) 
DECLARE @separator CHAR 

SET @data = 'a,bb,ccc,dddd,eeeee,ffffff,ggggggg,hhhhhhhh,iiiiiiiii'; 
SET @separator = ',' 

DECLARE @substring VARCHAR(MAX) 
DECLARE @dividepos INT 
SET @dividepos = CHARINDEX(@separator, @data) 

WHILE @dividepos <> 0 OR LEN(@data) > 0 
BEGIN
    SET @dividepos = CHARINDEX(@separator, @data) 
    IF @dividepos = 0 
    BEGIN 
        SET @substring = @data 
        SET @data = '' 
    END 
    ELSE 
    BEGIN 
        SELECT @substring = SUBSTRING(@data, 1, @dividepos - 1) 
        SET @data = SUBSTRING(@data, @dividepos + 1, LEN(@data)) 
    END 

    SELECT @substring 
END

CHARINDEX()와 SUBSTING()으로 분리


2. STRING_SLIPT() 함수를 이용한 분리 (2016버전 이후)

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 

 

STRING_SPLIT(Transact-SQL) - SQL Server

STRING_SPLIT 함수의 Transact-SQL 참조입니다. 이 테이블 반환 함수는 문자 구분 기호를 기준으로 문자열을 부분 문자열로 분할합니다.

docs.microsoft.com

 

DECLARE @data VARCHAR(MAX) 
DECLARE @separator CHAR 

SET @data = 'a,bb,ccc,dddd,eeeee,ffffff,ggggggg,hhhhhhhh,iiiiiiiii'; 
SET @separator = ',' 

SELECT * FROM STRING_SPLIT(@data, @separator)

STRING_SPLIT()으로 분리

 

320x100

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

[MSSQL] 호환성 수준  (0) 2021.06.17
[MSSQL] 이중화 방식  (0) 2021.06.15
[MSSQL] JSON 파싱하기  (0) 2021.06.11
[MSSQL] OPENQUERY 작성중  (0) 2021.06.09
[MSSQL] REST API 호출하기  (0) 2021.06.09