我正在寻找将记录从1列拆分到多列。数据用逗号分隔,文本用双引号括起来。虽然文本中没有用引号括起来的逗号,但SSIS和导入向导会正确解析数据。 问题是当双引号包装文本包含逗号时 - 这个逗号欺骗SSIS并向导将该列拆分为2列。
例如: “abc”,“def”,123,“ghi,jkl”,456
应该出来: col1 col2 col3 col4 col5 abc def 123 ghi,jkl 456
我已经找到了通过分隔符拆分的方法,但是当逗号介于双引号之间时如何包含“跳过”?
感谢。
答案 0 :(得分: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