如何将包含10个值的逗号分隔行拆分为两行,其中第一行具有前5个值,而下一行具有SQL Server中的最后5个值
答案 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