【发布时间】:2018-03-28 04:14:47
【问题描述】:
我需要拆分由波浪号 (~) 字符分隔的列中的值,但对于单行中的多个列。我可以使用 XML 拆分一列,但在弄清楚如何拆分多列时遇到了问题。
这是一行当前的样子:
Column1 Column2 Column3 Column4
[JJ2222] [~BLUE~BROWN~BLACK] [~BB1234~BC2345~BD3456] [~BLUE, BABY (BB1234)~BROWN, COW (BC2345)~BLACK, DOG (BD3456)]
拆分后,我期望多行的所有值在锚点上对齐 (JJ2222):
Column1 Column2 Column3 Column4
JJ2222 BLUE BB1234 BLUE, BABY (BB1234)
JJ2222 BROWN BC2345 BROWN, COW (BC2345)
JJ2222 BLACK BD3456 BLACK, DOG (BD3456)
以我有限的知识,我可能会创建 3 个单独的查询,将每个列分别拆分并加载到一个临时表中,然后在 Column1 上加入每个表,但我希望有一种方法可以在一个查询中完成。
【问题讨论】:
-
有几十个重复的说法相同:避免首先插入这样的值。加载数据时拆分字符串要容易得多。您无法索引或搜索此类列。 SQL Server 在 2016 年添加了一个
STRING_SPLIT命令,可用于清理此类条目 -
Panagiotis - 感谢您的建议。是的,我对2016年添加的String_Split函数很熟悉,但不幸的是,这个版本是2012年。
标签: sql-server split