IT/SQL
SQL SPLIT - table return
lI헐헐Il
2011. 9. 23. 15:50
USE [DOOBMS_DB] USE [DOOBMS_DB] GO /****** Object: UserDefinedFunction [dbo].[FN_SPLIT] Script Date: 09/23/2011 17:57:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[FN_SPLIT] ( @StrValue CHAR(1000), -- 분리할 문자열 @SplitChar CHAR(1) -- 구분할 문자 ) RETURNS @SPLIT_TEMP TABLE ( VALUE VARCHAR(50) ) AS BEGIN DECLARE @oPos INT, @nPos INT DECLARE @TmpVar CHAR(1000) -- 분리된 문자열 임시 저장변수 SET @oPos = 1 -- 구분문자 검색을 시작할 위치 SET @nPos = 1 -- 구분문자 위치 IF(CHARINDEX(@SplitChar, @StrValue, 1 )= 0 AND @StrValue <> '') BEGIN INSERT INTO @SPLIT_TEMP VALUES( RTRIM(@StrValue)) END ELSE BEGIN WHILE (@nPos > 0) BEGIN SET @nPos = CHARINDEX(@SplitChar, @StrValue, @oPos ) IF @nPos = 0 SET @TmpVar = RIGHT(RTRIM(@StrValue), LEN(@StrValue)- @oPos+ 1 ); ELSE SET @TmpVar = SUBSTRING(RTRIM(@StrValue), @oPos, @nPos - @oPos) IF LEN(@TmpVar)>0 INSERT INTO @SPLIT_TEMP VALUES( @TmpVar) SET @oPos = @nPos + 1 END END RETURN END --select * from fn_split('A;B;C;D;E;F;G;H;',';')
위처럼 함수를 작성해서 사용.