3초기억력

MSSQL 함수 - asp 에서 split 같은 효과 + 인덱스번호따기 본문

쿼리_MSSQL

MSSQL 함수 - asp 에서 split 같은 효과 + 인덱스번호따기

잠수콩 2011. 8. 24. 10:36
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


제목 :  MSSQL 함수 - asp 에서 split 같은 효과 + 인덱스번호따기


-- =============================================

-- Description: <문자열을 특정문자로 SPLIT 처리>
-- =============================================
CREATE  FUNCTION [dbo].[keyword_Split](@strValue NVARCHAR(4000), @splitChar NVARCHAR(1)) -- 분리 문자열, 구분 문자
RETURNS @split_Temp Table(num INT, val NVARCHAR(4000))
AS
BEGIN
 DECLARE @oPos INT, @nPos INT, @i INT
 DECLARE @tempVar NVARCHAR(4000) -- 분리된 문자열 임시 저장변수

 SET @oPos = 1 -- 구분문자 검색을 시작할 위치
 SET @nPos = 1 -- 구분문자 위치
 SET @i = 0

 WHILE(@nPos > 0)
 BEGIN
  SET @nPos = CHARINDEX(@splitChar, @strValue, @oPos)

  IF @nPos = 0
   SET @tempVar = RIGHT(@strValue, LEN(@strValue) - @oPos + 1)
  ELSE
   SET @tempVar = SUBSTRING(@strValue, @oPos, @nPos - @oPos)

  IF LEN(@tempVar) > 0
   INSERT INTO @split_Temp VALUES(@i, @tempVar)

  SET @oPos = @nPos + 1
  SET @i = @i + 1
   
 END

 RETURN
END



-- 사용법
-- SELECT * FROM keyword_Split('빨강|노랑|파랑|빨강|노랑|', '|')
-- SELECT * FROM keyword_Split('A,B,C,D,A', ',')

 


내용 : split 하여 각 인덱스번호를 따준다.


출처 : 



Comments