Split 유형의 함수로 구분자로 몇번째 위치의 문자열 가져오기
-----------------------------------------------------------------------------------------------------------
-- Split 유형의 함수
-- 문자열에서 구분자(@iSeparator)로 몇번째 단어 가져오기
-- 예: SELECT 데이터베이스명.소유자명.fn_GetIdxDataLikeSplit('가-나-다',2,'-') --> '나'
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
-- 프로시저 생성
-----------------------------------------------------------------------------------------------------------
ALTER FUNCTION [dbo].[fn_GetIdxDataLikeSplit]
(
@iText VARCHAR(200),
@idx INT,
@iSeparator VARCHAR(10) = '-'
)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @wData VARCHAR(200)
DECLARE @wText VARCHAR(200)
DECLARE @wSeparator VARCHAR(10)
DECLARE @wNum INT
SET @wData = ''
SET @wNum = 1;
SET @wSeparator = LTRIM(RTRIM(@iSeparator));
SET @wText = LTRIM(RTRIM(@iText)) + @wSeparator;
IF CHARINDEX(@wSeparator, @iText) > 0
BEGIN
WHILE @idx >= @wNum
BEGIN
IF CHARINDEX(@wSeparator, @wText) > 0
BEGIN
-- 문자열의 인덱스 위치의 요소를 반환
SET @wData = SUBSTRING(@wText, 1, CHARINDEX(@wSeparator, @wText) - 1);
SET @wData = LTRIM(RTRIM(@wData));
-- 반환된 문자는 버린후 좌우공백 제거
SET @wText = LTRIM(RTRIM(RIGHT(@wText, LEN(@wText) - (LEN(@wData) + LEN(@iSeparator)))))
END
ELSE
BEGIN
SET @wData = ''
END
SET @wNum = @wNum + 1
END
END
ELSE
BEGIN
SET @wData = @iText
END
RETURN(@wData)
END