declare @xml
set @xml='<root>
<note ID="egu" Name="256">
<item ID="b1" Name="部門1">
<items ID="be2" Name="子部门" />
</item>
<item ID="b2" Name="開發部">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="b3" Name="開發部1">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bf5" Name="開發部5">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bgt4" Name="開發部6">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
</note>
</root>'select @xml.query('//item[.[@ID="Begu02000"] or items[@ID="Begu02000"]]') //对单个的查询
是否可以查询多个如:查询item节点属性的ID为:b1,b3,bgt4
就像:select * from 表 where 字段 in(可以接多个条件)
寻求合理的解决方案,谢谢!!
set @xml='<root>
<note ID="egu" Name="256">
<item ID="b1" Name="部門1">
<items ID="be2" Name="子部门" />
</item>
<item ID="b2" Name="開發部">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="b3" Name="開發部1">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bf5" Name="開發部5">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bgt4" Name="開發部6">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
</note>
</root>'select @xml.query('//item[.[@ID="Begu02000"] or items[@ID="Begu02000"]]') //对单个的查询
是否可以查询多个如:查询item节点属性的ID为:b1,b3,bgt4
就像:select * from 表 where 字段 in(可以接多个条件)
寻求合理的解决方案,谢谢!!
if object_id('tempdb..#d') is not null
begin
drop table #d
end
create table #d (
ItemCode nvarchar(16) not null,
Time datetime not null,
value decimal(18,6) null,
State varchar(4) null
primary key(ItemCode,Time))
exec @ret = sp_xml_preparedocument @idoc OUTPUT, @strData
if (@ret = 0)
begin
--将xml中的信息复制到表变量中
insert into #d
select o,t,convert(float,v),s
from openxml(@idoc, '/r/d')
with(o nvarchar(16) '@i',
t varchar(19) '@t',
v varchar(16) '@v',
s varchar(4) '@s'
)
end
else
begin
raiserror ('保存数据读取失败!', 11, -1)
return -1
end
exec sp_xml_removedocument @idoc
select * from #d
http://topic.csdn.net/u/20081107/17/68aaf5a9-c596-4ab5-ae18-f3370b2ab35b.html
exec @ret = sp_xml_preparedocument @idoc OUTPUT, @strData
@idoc是要输出的内容,@strData为xml,from openxml(@idoc, '/r/d')这句是不是有错啊,是否应换成from openxml(@strData, '/r/d')
set @xml='<root>
<note ID="egu" Name="256">
<item ID="b1" Name="部門1">
<items ID="be2" Name="子部门" />
</item>
<item ID="b2" Name="開發部">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="b3" Name="開發部1">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bf5" Name="開發部5">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
<item ID="bgt4" Name="開發部6">
<items ID="be3" Name="子部门3" />
<items ID="be4" Name="子部门4" />
</item>
</note>
</root>'
select @xml.query('//item[@ID="b1" or @ID="b3" or @ID="bgt4"]')
--result
/*<item ID="b1" Name="部門1"><items ID="be2" Name="子部门"/></item><item ID="b3" Name="開發部1"><items ID="be3" Name="子部门3"/><items ID="be4" Name="子部门4"/></item><item ID="bgt4" Name="開發部6"><items ID="be3" Name="子部门3"/><items ID="be4" Name="子部门4"/></item>*/
select @xml.query('//item[@ID="b1" or @ID="b3" or @ID="bgt4"]')
不知这句还能不能再简化...