2010-08-18 6 views
0

나는 가져온 데이터 열을 연락처 주소 필드로 구성된 Lotus Notes 데이터베이스에서 가지고 있습니다. 주소의 항목은 ASCII (13), ASCII (10)로 구분됩니다.SQL 서버 문자열을 하위 문자열로 구문 분석

이 주소를 별도의 열로 나누는 가장 쉬운 방법은 무엇입니까?

답변

1

저는 프로젝트에서 이와 비슷한 것을 사용합니다. 불행히도 필자는 최적화 된 버전을 가지고 있지 않지만 신속하게 코딩했습니다. 이렇게하면 시작할 수 있습니다 ...

CREATE FUNCTION fx_Split 
(
    @text varchar(max), 
    @splitChar char(1) 
) 
RETURNS 
@Result TABLE 
(
    RowIndex int identity(1,1), 
    SplitText varchar(max) 
) 
AS 
BEGIN 

    DECLARE @index int SET @index = 0 
    DECLARE @SplitText varchar(max) SET @SplitText = '' 
    DECLARE @TempText varchar(max) SET @SplitText = '' 

    SET @index = CHARINDEX(@splitChar, @text) 
    SET @TempText = @text 

    WHILE(@index > 0) 
    BEGIN 

     INSERT INTO @Result VALUES (SUBSTRING(@TempText, 1, @index-1)) 

     SET @TempText = SUBSTRING(@TempText, @index + 1, LEN(@TempText)) 

     SET @index = CHARINDEX(@splitChar, @TempText) 

    END 

    INSERT INTO @Result VALUES (@TempText) 

    RETURN 
END 
GO 


select * from dbo.fx_Split ('asdf,qwer,asfegqgr,qweqwefe,qwf4ggrr,qfasdglsdfg', ',')