이 함수는 문자열을 '|'와 같은 특정 구분자로 분리하여 테이블 또는 배열로 결과 값을 반환한다. 디폴트 구분자는 '파이프라인(|)'이다.
--사용 방법: --SELECT * FROM Stores WHERE -- StoreId IN -- ( -- SELECT ItemValue FROM fn_SplitIn2Rows('44|23|11|4|89|21', '|') -- )
이 SQL 스크립트 소스 코드는 다음과 같다.
CREATE FUNCTION fn_SplitIn2Rows ( @PInStrSource varchar(8000) = NULL, @pInChrSeparator char(1) = '|' ) RETURNS @ARRAY TABLE (ItemValue VARCHAR(1000)) AS BEGIN DECLARE @CurrentStr varchar(2000) DECLARE @ItemStr varchar(200)
SET @CurrentStr = @PInStrSource
WHILE Datalength(@CurrentStr) > 0 BEGIN IF CHARINDEX(@pInChrSeparator, @CurrentStr,1) > 0 BEGIN SET @ItemStr = SUBSTRING (@CurrentStr, 1, CHARINDEX(@pInChrSeparator, @CurrentStr,1) - 1) SET @CurrentStr = SUBSTRING (@CurrentStr, CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1, (Datalength(@CurrentStr) - CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1)) INSERT @ARRAY (ItemValue) VALUES (@ItemStr) END ELSE BEGIN INSERT @ARRAY (ItemValue) VALUES (@CurrentStr) BREAK; END END RETURN END