2013-07-07 3 views
0

1 열에서 여러 열로 레코드를 분할하려고합니다. 데이터는 큰 따옴표로 묶인 텍스트 인 쉼표로 구분됩니다. 따옴표로 묶인 텍스트에는 쉼표가 없지만 SSIS와 가져 오기 마법사는 데이터를 잘 파싱합니다. 문제는 큰 따옴표로 묶인 텍스트에 쉼표가 포함 된 경우입니다.이 쉼표로 SSIS와 마법사가 해당 열을 2 열로 나눕니다.SQL 서버로 한정자가 텍스트를 열로 나누기

예를 들어

: "ABC", "DEF", 123 "GHI, JKL"456

가 나올해야 : COL1 COL2 COL3 col4 COL5 ABC DEF 123 GHI, JKL 456

구분 기호로 구분하는 방법을 찾았지만 쉼표가 큰 따옴표 사이에 있으면 건너 뛰기를 어떻게 포함 할 수 있습니까?

감사합니다.

답변

0

이것이 내가 원하는 결과를 얻은 이유입니다. 기본적으로 쉼표 구분 기호를 변경하여 문자열에 속한 쉼표와 구분 기호를 쉽게 구별 할 수 있도록 다른 문자 (또는 제 경우에는 2)를 포함하십시오. 당신이 가질 수있는 유일한 문제는 따옴표로 묶이지 않은 숫자입니다.

Declare 

@s nvarchar(max), 
@split char(3), 
@x xml 

Set @s = '123","123,abc","345","345,def'; 
Set @split = '","'; 

Select @x = CONVERT(xml,'<root><s>'+Replace(@s,@split,'</s><s>')+'</s></root>'); 

Select [Value] = T.c.value('.','varchar(20)') 
FROM @x.nodes('/root/s') T(c) 

결과 :

123 
123,abc 
345 
345,def