DBMS/MS-SQL

[MS-SQL][FUNCTION] String to Table 변환 함수 (Split)

Fly_Mir 2018. 6. 1. 13:59

MS-SQL에서 String Array을 Table로 변환시키는 함수(Split 기능)를 만들어보자.

MS-SQL에서 프로시저를 만들다보면 가끔 String Array( ','로 구분되는 String 같은)를 테이블로 변환하면 편하게 진행할수 있을경우가 있다.

(보통 WHILE을 돌릴때 혹은 재정렬이 필요할경우)

그럴경우 아래 Function을 미리 정의해놓고 사용하면 편리하게 이용이 가능하다.


    CREATE FUNCTION fnStringToTable (@String Nvarchar(4000), @separator nvarchar(10))
    RETURNS @re TABLE
        (col nvarchar(100))
    AS
    BEGIN
     
    DECLARE @col Nvarchar(100)
    DECLARE @len smallint
    DECLARE @cur smallint
    DECLARE @next smallint
     
    SET @len = Len(@String)
    SET @cur = 1
     
    WHILE (@len > 0)
    BEGIN
    SET @next = 0
    SELECT @next = CHARINDEX(@separator, @String, @cur)
    IF @next = 0
    BEGIN
        SELECT @col = SUBSTRING(@String, @cur, (@len - @cur + 1))
        IF RTRIM(LTRIM(@col)) <> ''
            INSERT @re VALUES(RTRIM(LTRIM(@col))) 
        BREAK
    END
    ELSE
    BEGIN
        SELECT @col = SUBSTRING(@String, @cur, (@next - @cur))
        SET @cur = @next + 1
    END
        IF RTRIM(LTRIM(@col)) <> ''
            INSERT @re VALUES(RTRIM(LTRIM(@col)))
    END
    RETURN
    END 

날다의 운영환경
본체DeskTop
O SWindows7 Ultimate K
ApplicationMicrosoft SQL Server Management Studio 2012
MS-SQLMicorsoft SQL Server 2008 R2 (10.50.1765.0)