2009-08-19 132 views
4

我剛剛開始在SQL Server數據庫中查詢XML。我遇到了最基本的查詢問題。這是一個簡單的例子。我如何返回描述?下面的SELECT語句是我正在使用的,但它什麼也沒有返回。SQL Server中的XML查詢

SELECT Incidents.IncidentXML.query 
('data(/dsIncident/IncidentInformation/Description)') AS Description 
FROM Incidents 

這是我使用的XML文件的片段:

<dsIncident xmlns="http://tempuri.org/dsIncident.xsd"> 
    <IncidentInformation> 
    <Description>This is the description.</Description> 
    <Country>Singapore</Country> 
    </IncidentInformation> 
</dsIncident> 

回答

11

好了,你在XML命名空間錯過了! :-)

試試這個:

SELECT 
    Incidents.IncidentXML.query('declare namespace x="http://tempuri.org/dsIncident.xsd"; 
      (/x:dsIncident/x:IncidentInformation/x:Description)') AS Description 
FROM Incidents 

神奇的是這裏的

declare namespace x="http://tempuri.org/dsIncident.xsd" 

一部分 - 它聲明瞭一個命名空間(與您選擇的前綴 - 可以是任何東西 - 這裏的「x ')的XML數據查詢期間。

希望這會回報一些東西! ;-)

Marc