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

这就是我为获得您正在寻找的结果所做的。基本上将您的逗号分隔符更改为包含另一个字符(在我的情况下为两个字符),以便您可以轻松区分属于字符串的逗号和分隔符。您可能遇到的唯一问题是没有用引号括起来的数字。

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 回答