2009-08-19 2 views
4

Я только начинаю запрашивать XML в базе данных SQL Server. У меня возникают проблемы с самым основным запросом. Вот упрощенный пример. Как мне вернуть описание? Ниже приведен оператор SELECT, который я использую, но он ничего не возвращает.XML-запрос в SQL Server

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" 

часть здесь - объявляет пространство имен (с префиксом по вашему выбору - может быть что угодно - вот х ') на период запроса на данные XML.

Надеюсь, это вернет что-то! ;-)

Marc