이 블로그 검색

2010년 12월 13일 월요일

MS-SQL SPLIT 사용

SELECT arr_split('블로그|MSSQL|WEB', '|', 1)    
결과값 : '블로그'


CREATE FUNCTION arr_split(
 @sText  VARCHAR(500),  -- 대상 문자열
 @str   CHAR(1) = '|',       -- 구분기호(Default '|')
 @idx  INT                       -- 배열 인덱스

)
RETURNS VARCHAR(20)
AS
BEGIN
 DECLARE @word    CHAR(20),    -- 반환할 문자
      @sTextData  VARCHAR(600),
      @num    SMALLINT;
   
 SET @num = 1;
 SET @str = LTRIM(RTRIM(@str));
 SET @sTextData = LTRIM(RTRIM(@sText)) + @str;

 WHILE @idx >= @num
 BEGIN
  IF CHARINDEX(@str, @sTextData) > 0
  BEGIN
   -- 문자열의 인덱스 위치의 요소를 반환
   SET @word = SUBSTRING(@sTextData, 1, CHARINDEX(@str, @sTextData) - 1);
   SET @word = LTRIM(RTRIM(@word));
   -- 반환된 문자는 버린후 좌우공백 제거  
   SET @sTextData = LTRIM(RTRIM(RIGHT(@sTextData, LEN(@sTextData) - (LEN(@word) + 1))))
  END ELSE BEGIN
   SET @word = NULL;
  END
  SET @num = @num + 1
 END
 RETURN(@word);
END