0

XML データから結果を取得しようとしていますが、最初のノードの値しか取得できません。

create table #temp(xmlString nvarchar(max))
insert into #temp (xmlString) values 
('<?xml version="1.0" ?><response status = "ERROR">
<error>Error1</error>
<error>Error2</error>
</response>')

結果が欲しい:

Error1, Error2

助けてください。ありがとう

4

2 に答える 2

3
select
    x.c.value('.', 'nvarchar(128)') as value
from (select cast(xmlString as xml) as data from temp) as t
    outer apply t.data.nodes('/response/error') as x(c)

SQL フィドルの例

于 2013-07-20T21:38:24.347 に答える
0

正解

select STUFF((select ',' +  x.c.value('.', 'nvarchar(max)') 
from (select cast(xmlString as xml) as data from #temp)
as t outer apply t.data.nodes('/response/error')
as x(c)for xml path('')), 1, 1, '') as Errors
于 2013-07-20T22:31:38.430 に答える