0

レコードを 1 列から多数の列に分割しようとしています。データは、二重引用符で囲まれたテキストである列でカンマで区切られています。引用符で囲まれたテキストにはコンマはありませんが、SSIS とインポート ウィザードはデータを適切に解析します。問題は、二重引用符で囲まれたテキストにコンマが含まれている場合です。このコンマにより、SSIS とウィザードがその列を 2 列に分割してしまいます。

例えば:

"abc", "def", 123, "ghi, jkl", 456

出てくるはずです:

col1  col2  col3  col4     col5  
abc   def   123   ghi,jkl  456

区切り文字で分割する方法を見つけましたが、コンマが二重引用符の間にある場合に「スキップ」を含めるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

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 
于 2013-08-09T13:46:53.153 に答える