这是我的XML
<ROOMTYPES>
<ROOMTYPE Id="1" Total="5">
<ROOMFACILITIES>
<FID>101</FID>
<FID>103</FID>
<FID>105</FID>
</ROOMFACILITIES>
</ROOMTYPE>
<ROOMTYPE Id="2" Total="4">
<ROOMFACILITIES>
<FID>108</FID>
<FID>109</FID>
<FID>110</FID>
</ROOMFACILITIES>
</ROOMTYPE>
</ROOMTYPES>
我需要生成一个xquery,它将显示如下结果
int int xml
1 5 <FID>101</FID><FID>103</FID><FID>105</FID>
2 4 <FID>108</FID><FID>109</FID><FID>110</FID>
我已经到了这里。
int int xml
1 5 <FID>101</FID><FID>103</FID><FID>105</FID>
2 4 <FID>101</FID><FID>103</FID><FID>105</FID>
使用此
declare @xmldocument xml;
set @xmldocument =( select RoomTypes from Hotels);
declare @tb table(id int, total int, fid xml);
declare @id int;
set @id=0;
insert into @tb (id, total,fid)
select
p.value('../@Id', 'int'),
p.value('../@Total', 'int'),
p.query('//ROOMTYPE[@Id=1]/ROOMFACILITIES/FID')
from @xmldocument.nodes('ROOMTYPES/ROOMTYPE/ROOMFACILITIES') n(p)
select * from @tb;
因为我已经硬编码了@id=1,所以它只显示第一个元素的结果。
感谢任何帮助…
最佳答案
select
p.value('../@Id', 'int'),
p.value('../@Total', 'int'),
p.query('FID')
from @xmldocument.nodes('ROOMTYPES/ROOMTYPE/ROOMFACILITIES') n(p)
关于xml - 在SQL Server 2005中将XML数据转换为表格格式和XML格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5826946/