본문 바로가기

Dev/MS-SQL

[MS-SQL] Split Function

반응형

split를 테이블로 반환해 준다.

CREATE FUNCTION dbo.spSplit
(
    @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
반응형