22,207
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #test
(
ID UNIQUEIDENTIFIER,
NAME NVARCHAR(50),
SORTNO int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'aa,bb,cc,dd', -- NAME - nvarchar(50)
1 -- SORTNO - int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'qqq,www,eee', -- NAME - nvarchar(50)
3 -- SORTNO - int
)
CREATE TABLE #test
(
ID UNIQUEIDENTIFIER,
NAME NVARCHAR(50),
SORTNO int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'aa,bb,cc,dd', -- NAME - nvarchar(50)
1 -- SORTNO - int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'qqq,www,eee', -- NAME - nvarchar(50)
3 -- SORTNO - int
)
select id,
--name,
SUBSTRING(t.name, number ,CHARINDEX(',',t.name+',',number)-number) as name,
SORTNO
from #test t,master..spt_values s
where s.number >=1
and s.type = 'P'
and SUBSTRING(','+t.name,s.number,1) = ','
/*
id name SORTNO
185CEB33-EE5E-4556-8C5F-3B8CBC3FD5F8 aa 1
185CEB33-EE5E-4556-8C5F-3B8CBC3FD5F8 bb 1
185CEB33-EE5E-4556-8C5F-3B8CBC3FD5F8 cc 1
185CEB33-EE5E-4556-8C5F-3B8CBC3FD5F8 dd 1
DA609361-62DC-4A34-92F3-7B4220CB9503 qqq 3
DA609361-62DC-4A34-92F3-7B4220CB9503 www 3
DA609361-62DC-4A34-92F3-7B4220CB9503 eee 3
*/
SELECT a.id,b.NAME,a.SORTNO
FROM
(SELECT id,SORTNO, NAME=CONVERT(XML, '<root><v>'+replace(RTRIM(LTRIM(NAME)),',','</v><v>')+'</v></root>') FROM #test) a
OUTER APPLY
(SELECT NAME = C.v.value('.','NVARCHAR(MAX)') FROM a.NAME.nodes('/root/v') C(v)) b
CREATE TABLE #test
(
ID UNIQUEIDENTIFIER,
NAME NVARCHAR(50),
SORTNO int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'aa,bb,cc,dd', -- NAME - nvarchar(50)
1 -- SORTNO - int
)
INSERT INTO #test
( ID, NAME, SORTNO )
VALUES ( NEWID(), -- ID - uniqueidentifier
N'qqq,www,eee', -- NAME - nvarchar(50)
3 -- SORTNO - int
)
select
id,
--a.name,
SUBSTRING(a.name,number,CHARINDEX(',',a.name+',',number)-number) as NAME ,SORTNO
from
#test a,master..spt_values
where
number >=1 and number<=len(a.name)
and type='p'
and substring(','+a.name,number,1)=','
/*
id NAME SORTNO
------------------------------------ -------------------------------------------------- -----------
E8D17CD6-735E-45CB-ABA8-C26B4830C80D aa 1
E8D17CD6-735E-45CB-ABA8-C26B4830C80D bb 1
E8D17CD6-735E-45CB-ABA8-C26B4830C80D cc 1
E8D17CD6-735E-45CB-ABA8-C26B4830C80D dd 1
C94FFF69-5870-47F8-ACC6-DE997F765577 qqq 3
C94FFF69-5870-47F8-ACC6-DE997F765577 www 3
C94FFF69-5870-47F8-ACC6-DE997F765577 eee 3
*/
select
id,
--a.name,
SUBSTRING(a.name,number,CHARINDEX(',',a.name+',',number)-number) as NAME ,SORTNO
from
#test a,master..spt_values
where
number >=1 and number<=len(a.name)
and type='p'
and substring(','+a.name,number,1)=','