실행 예제 :

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

프로젝트마다 필요한 함수였던 것으로 기억된다.
다음 프로젝트에는 머리쓸 필요없이 복사해서 사용하면 될듯!

TRACKBACK URL : http://bbon.kr/blog/trackback/816