将逗号分隔的字符串拆分为SQL Server中的2行

时间:2017-07-17 04:01:59

标签: sql sql-server

如何将包含10个值的逗号分隔行拆分为两行,其中第一行具有前5个值,而下一行具有SQL Server中的最后5个值

2 个答案:

答案 0 :(得分:0)

这只是一个如何让它发挥作用的例子

CREATE TABLE T
(ColSplit varchar(100)
)

INSERT INTO T VALUES
('a,b,c,d,e,f,g,h,i,j');

SELECT VALUE 
FROM STRING_SPLIT((SELECT ColSplit FROM T),',')

请参阅此处了解有关STRING_SPLIT

的更多信息

答案 1 :(得分:0)

您应该重新考虑您的数据库设计 正如我在评论中写的那样,在数据库中存储分隔列表是一个糟糕的设计。

但是,如果由于某种原因您无法更改数据库设计, 你可以这样做:

DECLARE @MyString varchar(100) = 'a,bc,def,ghij,klmno,pqrstu,vwxyz12,34567890,1qaz2wsx3,edc4rfv5tg,b6yhn7ujm'


;WITH CTE AS
(
    SELECT  @MyString As string,
            CHARINDEX(',', @MyString) As commaIndex,
            1 as commaNumber
    UNION ALL
    SELECT  string, 
            CHARINDEX(',', string, commaIndex + 1),
            commaNumber + 1
    FROM CTE
    WHERE CHARINDEX(',', string, commaIndex + 1) > 0
)


SELECT SUBSTRING(string, 1, commaIndex-1)
FROM CTE
WHERE commaNumber = 5

UNION ALL

SELECT SUBSTRING(string, commaIndex+1, LEN(string))
FROM CTE
WHERE commaNumber = 5

结果:

a,bc,def,ghij,klmno
pqrstu,vwxyz12,34567890,1qaz2wsx3,edc4rfv5tg,b6yhn7ujm