프로시저 파라미터 값을 던질때 'AAA^BBB^CCC^DDD^' 이렇게 던지면 프로시저 내부에서 LOOP처리 하며 일일이
계산하여 처리했는데 그 해결책을 찾은 듯 하다!
--------------------------------------------------------------------------------------------------------------
CREATE FUNCTION [dbo].[SPLIT_STR](@S_VAL NVARCHAR(4000), @S_SPLIT_CHAR NVARCHAR(1))
RETURNS @T_SPLIT TABLE(NUM INT, VAL NVARCHAR(4000))
AS
-- SELECT * FROM DBO.SPLIT_STR('AB|BC|CD', '|')
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(@S_SPLIT_CHAR, @S_VAL, @oPos)
IF @nPos = 0
SET @tempVar = RIGHT(@S_VAL, LEN(@S_VAL) - @oPos + 1)
ELSE
SET @tempVar = SUBSTRING(@S_VAL, @oPos, @nPos - @oPos)
IF LEN(@tempVar) > 0
INSERT INTO @T_SPLIT VALUES (@i, @tempVar)
SET @oPos = @nPos + 1
SET @i = @i + 1
END
RETURN
END
'030. Database > 02. MS_SQL' 카테고리의 다른 글
[MSSQL] 저장프로시저 FETCH 처리 (0) | 2014.02.07 |
---|---|
[MSSQL] 테이블을 만든 후 설명(COMMENT)을 달고자 할때 (1) | 2013.11.28 |
[MSSQL] 서브쿼리를 이용한 UPDATE (0) | 2013.02.18 |
[MSSQL] MDF, LDF 파일로 DB복원하기 (0) | 2013.01.23 |
[MSSQL] 자동완성기능(InteliSense)을 사용하고자 할때 - 미완료 상태임 (2) | 2013.01.18 |
WRITTEN BY
- 테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게