我想从下面的xml中获取gid
和uid
。此xml作为名为xmlmsg
的SQL Server 2008表中的列存在。我需要一个SQL查询来解析具有xml列的表,其中的数据如下所示:
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://api.money.com/schema/contact" Email=""
gId="11" uId="uadgra45678" Timestamp="2013-10-17T19:19:41Z"
xsi:schemaLocation="http://api.money.com/schema/contact http://api.money.com/schema/contact/contact-1.2.xsd">
</person>
答案 0 :(得分:1)
(这实际上是一个评论,因为它似乎没有回答标题隐含的问题。)
此查询(来自LinqPad)创建并检索XML数据:
--Drop Table #TempXml
Create Table #TempXml(Value XML)
Insert Into #TempXml(Value)Values('<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://api.money.com/schema/contact" Email=""
gId="11" uId="uadgra45678" Timestamp="2013-10-17T19:19:41Z"
xsi:schemaLocation="http://api.money.com/schema/contact http://api.money.com/schema/contact/contact-1.2.xsd">
</person>')
Select count(*) from #TempXml;
Select * from #TempXml;
Select Value.value('declare namespace AMC="http://api.money.com/schema/contact";
/AMC:person[1]/@uId','varchar(max)')
,Value.value('declare namespace AMC="http://api.money.com/schema/contact";
/AMC:person[1]/@gId','int')
From #TempXml;
Drop Table #TempXml