-2
如何將包含10個值的逗號分隔行分成兩行,其中第一行具有前5個值,下一行具有SQL Server中的最後5個值在SQL Server中將逗號分隔的字符串分成2行
如何將包含10個值的逗號分隔行分成兩行,其中第一行具有前5個值,下一行具有SQL Server中的最後5個值在SQL Server中將逗號分隔的字符串分成2行
這只是一個例子,你如何使它工作
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
你真的應該重新考慮你的數據庫設計。
正如我在評論中寫的,在數據庫中存儲分隔列表是一個糟糕的設計。
但是,如果由於某種原因,你不能改變數據庫的設計, 你可以做這樣的事情:
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
你搜索分割字符串函數在Sql Server中?順便說一句你使用的是哪個版本的sql server? –
請將一些示例數據和預期結果作爲DDL發佈,並顯示您的嘗試 – TheGameiswar
這並不難。你可以使用任何包含行號的字符串拆分函數(或者爲你自己定製一個字符串,但是字符串拆分函數不難找到),那麼你可以用一個mod函數使用case aggregation(例如'SELECT Val1 = MAX(當RN%5 = 1,則VAL END),Val2 = MAX(當RN%5 = 2則VAL END)...)和group by(RN-1)/ 5 – ZLK