2014-10-09 83 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