구분자로 구분된 붙임문자열을 테이블로 변환

Ad


구분자로 구분된 문자열을 입력받아 테이블로 반환하는 함수입니다.

실행 예제 :

SELECT * FROM dbo.UDF_문자열테이블변환('1,2,3', ',')
결과
코드
1
2
3
CREATE FUNCTION dbo.UDF_문자열테이블변환
(
    @문자열     VARCHAR(MAX),
    @구분문자   VARCHAR(10)
)
RETURNS @vRETURN_TABLE TABLE ( 코드 VARCHAR(100) )
AS
BEGIN

    DECLARE @v코드길이      INT,
            @v현재위치      INT,
            @v전체길이      INT,
            @v구분문자길이  INT

    SET @v현재위치 = 1
    SET @v전체길이 = LEN(@문자열)
    SET @v코드길이 = CASE WHEN CHARINDEX(@구분문자, @문자열, 1) = 0 THEN LEN(@문자열) ELSE CHARINDEX(@구분문자,@문자열, 1) - 1 END
    SET @v구분문자길이 = LEN(@구분문자)

    WHILE @v현재위치 <= @v전체길이
        BEGIN

            INSERT INTO @vRETURN_TABLE (코드)
            SELECT SUBSTRING(@문자열, @v현재위치, @v코드길이)

            SET @v현재위치 = @v현재위치 + @v코드길이 + @v구분문자길이
            SET @v코드길이 = CASE WHEN CHARINDEX(@구분문자, @문자열, @v현재위치) = 0 THEN LEN(@문자열) ELSE CHARINDEX(@구분문자, @문자열, @v현재위치) - @v현재위치  END
        END

    RETURN
END
GO