본문 바로가기

Notice
Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Total
Today
Yesterday
관리 메뉴

[MSSQL] split 함수를 만들어보자(return table) 본문

디비/MSSQL

[MSSQL] split 함수를 만들어보자(return table)

일산번개 2018. 12. 21. 15:15


/*

 *  해당 문자열을 해당 구분문자로 분리하여 테이블형식으로 반환한다.

 */

CREATE FUNCTION fn_split

(

    @StrValue VARCHAR(1000),   -- 문자열

    @SplitChar VARCHAR(1)         -- 구분 문자

RETURNS @SPLIT_TEMP TABLE  ( VALUE VARCHAR(50) )

AS 

BEGIN   

    DECLARE @oPos INT, @nPos INT

    DECLARE @TmpVar VARCHAR(1000) -- 분리된 문자열 임시 저장변수


 


    SET @oPos = 1 -- 구분문자 검색을 시작할 위치

    SET @nPos = 1 -- 구분문자 위치


 


    WHILE (@nPos > 0)

    BEGIN


        SET @nPos = CHARINDEX(@SplitChar, @StrValue, @oPos )



        IF @nPos = 0 

            SET @TmpVar = RIGHT(@StrValue, LEN(@StrValue)-@oPos+1 )

        ELSE

            SET @TmpVar = SUBSTRING(@StrValue, @oPos, @nPos-@oPos)


 


        IF LEN(@TmpVar)>0

            INSERT INTO @SPLIT_TEMP VALUES( @TmpVar )



        SET @oPos = @nPos +1 

    END



   RETURN 

END



[사용방법]


SLEECT VALUE FROM fn_split('a|b|c|d','|')


 value

 a

 b

 c

 d





Comments