여러개의 데이터를 처리할 때 데이터 개수 만큼 파라메터를 설정하여 처리하면 되지만
데이터 수가 변경되는 경우에는 처리하기가 참 곤란합니다.
그래서 스트링으로 붙여서 보내주고 구분자로 파싱하여 처리합니다.
아래는 스트링으로 붙여서 보낸 데이터를 파싱하여 TABLE 형태로 변환해주는 함수입니다.
CREATE FUNCTION [dbo].[fn_SplitNumber]
(
@String VARCHAR(8000)
)
RETURNS @Array TABLE
(
DataSeq INT IDENTITY(1,1),
Data FLOAT
)
AS
BEGIN
DECLARE
@Value FLOAT
, @Temp VARCHAR(100)
, @Length SMALLINT
, @CurrentIndex SMALLINT
, @NextIndex SMALLINT
SET @Length = LEN(@String)
SET @CurrentIndex = 1
SET @NextIndex = 1
WHILE @NextIndex > 0
BEGIN
SET @NextIndex = CHARINDEX(',', @String, @CurrentIndex)
IF @NextIndex = 0
BEGIN
SET @Temp = SUBSTRING(@String, @CurrentIndex, (@Length - @CurrentIndex + 1))
END
ELSE
BEGIN
SET @Temp = SUBSTRING(@String, @CurrentIndex, (@NextIndex - @CurrentIndex))
SET @CurrentIndex = @NextIndex + 1
END
IF @Temp <> ''
BEGIN
SET @Value = CONVERT(FLOAT, @Temp)
INSERT @Array VALUES(@Value)
END
END
RETURN
END
SELECT * FROM dbo.fn_SplitNumber('33.2, 45.5, 23.6,43.1, 38.2')
'Test Code > MSSQL' 카테고리의 다른 글
[MSSQL] 특정 문자 붙이기 REPLICATE 함수 (0) | 2015.01.13 |
---|---|
[MSSQL] 테이블 명세서 출력 (0) | 2014.12.26 |
[MSSQL] 프로시져 및 함수 내용 조회 쿼리문 (0) | 2014.12.06 |
[MSSQL] 행별변환 PIVOT (0) | 2014.12.05 |
[MSSQL] 테이블 및 컬럼 설명 수정 프로시져 (0) | 2014.12.04 |