IT/DB

[MSSQL] 콤마로 구분된 데이터를 테이블로 전환

Dev. Sean 2022. 3. 28. 14:58
반응형
CREATE FUNCTION UF_TEXT_SPLIT
(
	@TEXT			NVARCHAR(4000)
   ,@DELIMETER		CHAR(1)
)
RETURNS @STRINGS TABLE
(
	POSITION INT 	IDENTITY(1,1) PRIMARY KEY,
    		 VALUE  NVARCHAR(MAX)
)
AS
BEGIN
	DECLARE @INDEX	INT
    SET @INDEX = -1
    WHILE(LEN(@TEXT)>0)
    BEGIN
    	SET @INDEX = CHARINDEX(@DELIMETER, @TEXT)
        
        IF (@INEX = 0) AND (LEN(@TEXT) > 0 )
        BEGIN
        	INSERT INTO @STRINGS VALUES (@TEXT)
            BREAK
        END
        
        IF (@INDEX >1)
        BEGIN
        	INSERT INTO @STRINGS VALUES (LEFT(@TEXT, @INDEX -1))
            SET @TEXT = RIGHT(@TEXT, (LEN(@TEXT) - @INDEX))
        END
        ELSE
        	SET @TEXT = RIGHT(@TEXT, (LEN(@TEXT) - @INDEX))
	END
    
    RETURN
END

 

사용예시

'일일일,이이이,삼삼삼,사사사' 인 STRING 이있다면

 

UF_TEXT_SPLIT '일일일,이이이,삼삼삼,사사사', ','

 

실행시키면

 

일일일

이이이

삼삼삼

사사사

 

테이블로 변환됨

 

반응형