반응형
MS-SQL 문자열 분리하여 가져오기 쿼리(사용자 함수, 프로시져)
문자열과, Split 할 문자, Select 할 인덱스 번호를 입력받아 Split 한 String 을 반환한다.
사용방법
create FUNCTION [dbo].[UF_GET_STRSPLIT]
(
@iStrString VARCHAR(MAX), -- 전체 문자열
@iStrDelim VARCHAR(10), -- 자를 문자열
@iIntIndex INT -- select 인덱스
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @vStrRetVal NVARCHAR(256)
DECLARE @vIntStrlen INT
DECLARE @vIntDellen INT
DECLARE @vIntCnt INT
DECLARE @vIntCnt2 INT
DECLARE @vIntIndex INT
SET @vStrRetVal = ''
SET @vIntStrlen = 0
SET @vIntCnt = 1
SET @vIntCnt2 = 1
SET @vIntIndex = 1
SET @vIntStrlen = LEN(@iStrString)
SET @vIntDellen = LEN(@iStrDelim)
SET @vIntCnt = CHARINDEX(@iStrDelim, @iStrString)
SET @vStrRetVal = SUBSTRING(@iStrString, 0, @vIntCnt)
IF @vIntCnt > 0 BEGIN
WHILE @vIntCnt <= @vIntStrlen
BEGIN
IF @vIntIndex = @iIntIndex BEGIN
RETURN @vStrRetVal
END
SET @vIntCnt2 = CHARINDEX(@iStrDelim, @iStrString, @vIntCnt+@vIntDellen)
IF @vIntCnt2 > 0 BEGIN
SET @vStrRetVal = SUBSTRING(@iStrString, @vIntCnt+@vIntDellen, @vIntCnt2-@vIntCnt-@vIntDellen)
END
ELSE BEGIN
SET @vStrRetVal = SUBSTRING(@iStrString, @vIntCnt+@vIntDellen, @vIntStrlen-@vIntCnt)
IF @vIntIndex + 1 = @iIntIndex BEGIN
SET @vStrRetVal = SUBSTRING(@iStrString, @vIntCnt+@vIntDellen, @vIntStrlen-@vIntCnt)
RETURN @vStrRetVal
END
ELSE BEGIN
RETURN ''
END
END
SET @vIntCnt = @vIntCnt2
SET @vIntIndex = @vIntIndex + 1
END
END
ELSE BEGIN
IF @iIntIndex = 1 BEGIN
SET @vStrRetVal = @iStrString
END
ELSE BEGIN
SET @vStrRetVal = ''
END
END
RETURN @vStrRetVal
END
반응형