블로그 이미지
Sunny's

calendar

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

Notice

'split'에 해당되는 글 1

  1. 2009.11.20 [MSSQL] 문자열잘라 테이블로 리턴
2009. 11. 20. 17:38 MSSQL

/*
 *  해당 문자열을 해당 구분문자로 분리하여 테이블형식으로 반환한다.
 *  2005년 12월 14일 - 이세영 -
 */

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


[사용방법]

SELECT * FROM FN_SPLIT('빨강|노랑|파랑|빨강|노랑|','|')
SELECT * FROM FN_SPLIT('A,B,C,D,A',',')

posted by Sunny's
prev 1 next