2014-10-09 116 views
1

我想从下面的xml中获得giduid。此xml作为名为xmlmsg的SQL Server 2008表中的列存在。我需要分析其与像下面的数据的XML列的表的SQL查询:(这是一个真正的评论,因为它似乎并没有回答标题隐含的问题)使用多个xml命名空间解析SQL Server 2008中的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

定义*解析*。给定这个XML数据的预期输出是什么? – har07 2014-10-10 00:46:16

回答

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 
+0

这里是上述代码片段的[data.se] [query](http://data.stackexchange.com/stackoverflow/query/231961/check-so26289155-query)。 – 2014-10-10 01:38:03