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

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

실행 예제 :

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

이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.

This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다