我想拆分用逗号分隔的字符串并在 SQL Server 中另存为新行 [重复]

Posted

技术标签:

【中文标题】我想拆分用逗号分隔的字符串并在 SQL Server 中另存为新行 [重复]【英文标题】:I want to split the strings seperated with comma and save as new row in SQL Server [duplicate] 【发布时间】:2017-12-06 11:36:54 【问题描述】:

表1:

Col1 | Col2
-----+-------------------
AAA  | BB1,KB2,YB3,BP4

表2:

Col1 | Col2
-----+--------
AAA  | BB1 
AAA  | KB2
AAA  | YB3
AAA  | BP4

有人可以帮助我使用 SQL Server 2008 R2 或 SSIS 2008 R2 以这种方式拆分和保存结果吗?

【问题讨论】:

似乎是正确的做法! 【参考方案1】:

试试这个

DECLARE @T TABLE
(
    Col1 VARCHAR(10),
    Col2 VARCHAR(100)
)

INSERT INTO @T
VALUES('AAA','BB1,KB2,YB3,BP4')

;WITH CTE
AS
(
    SELECT
    Col1,
    Col2_1 = SUBSTRING(Col2,CHARINDEX(',',Col2)+1,LEN(Col2)),
    Col2 = SUBSTRING(Col2,1,CHARINDEX(',',Col2)-1)
    FROM @T

    UNION ALL

    SELECT
        Col1,
        Col2_1 = 
                CASE WHEN CHARINDEX(',',Col2_1) > 0
                            THEN SUBSTRING(Col2_1,CHARINDEX(',',Col2_1)+1,LEN(Col2_1))
                        ELSE NULL END,
        Col2 = CASE WHEN CHARINDEX(',',Col2_1) > 0
                            THEN SUBSTRING(Col2_1,1,CHARINDEX(',',Col2_1)-1)
                        ELSE Col2_1 END
        FROM CTE 
            WHERE ISNULL(Col2_1,'')<>''

)
SELECT
Col1,
Col2
FROM CTE

【讨论】:

像魅力一样工作 - 非常感谢

以上是关于我想拆分用逗号分隔的字符串并在 SQL Server 中另存为新行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL拆分逗号分隔的字符串

SQL拆分逗号分隔的字符串

PL SQL从用逗号分隔的字符串创建数字数组[重复]

拆分用逗号分隔的字符串并将值存储到 int 数组中

SQL Server用逗号分隔[重复]

SQL 2005 在分隔符上拆分逗号分隔列