2011-02-03 90 views
1

鑑於followng XML文檔,存儲在XML列名爲OfficersXML:SQL服務器的XQuery不.nodes()工作

<Officers xmlns="urn:reuterscompanycontent:officersdirectors03" Major="3" Minor="0" Revision="2" lang="en-US"> 
    <RepNo>0004N</RepNo> 
    <CompanyName Type="Primary">Alpharma Inc.</CompanyName> 
</Officers> 

爲什麼以下返回0行?

SELECT tbl.col.value(N'(./CompanyName)[1]',N'nvarchar(4000)') 
FROM dbo.RawData rd 
CROSS APPLY OfficersXML.nodes(N'/Officers') tbl(col) 
+0

您是否嘗試過單件?就像選擇一個OfficerXML來確保你的交叉應用正在提供一些東西?還有一個單獨的查詢來確保你的tbl.col.value(N'....語法抓住了你的想法? – 2011-02-03 23:22:19

回答

0

嘗試

SELECT tbl.col.value(N'(*:CompanyName)[1]',N'nvarchar(4000)') 
FROM dbo.RawData rd 
CROSS APPLY OfficersXML.nodes(N'/*:Officers') tbl(col) 

您還可以使用與命名空間設置爲默認命名空間: WITH XMLNAMESPACES(DEFAULT '甕:reuterscompanycontent:officersdirectors03')

更多信息: http://msdn.microsoft.com/en-us/library/ms177607.aspx

+0

這樣做了,謝謝。 – 2011-02-03 23:38:15