34,594
社区成员
发帖
与我相关
我的任务
分享
DECLARE @X XML
SELECT @X='<A>
<AA Id="13"/>
<AA Id="18"/>
<AA Id="19"/>
</A>'
-- SELECT @X.value('data(/A/AA/ID)[1]','varchar(20)')
SELECT nref.value('@Id', 'varchar(20)') AS TEST
FROM (SELECT @X AS LI) X
CROSS APPLY LI.nodes('/A/AA') AS R(nref)
/* 结果
TEST
--------------------
13
18
19
(3 行受影响)
*/
id v
----------- ----------------------
1 13,18,19
2 13,18,24,1,100,19
(2 行受影响)
declare @a table(id int identity(1,1),XmlDoc xml)
insert @a
select '<A> <AA Id="13" /> <AA Id="18" /> <AA Id="19" /> </A>' union all
select '<A> <AA Id="13" /> <AA Id="18" /> <AA Id="24" /><AA Id="1" /><AA Id="100" /><AA Id="19" /> </A>'
select id,v=replace(replace(replace(cast(XmlDoc as nvarchar(max)),'"/><AA Id="',','),'<A><AA Id="',''),'"/></A>','')
from @a