Написание запроса для извлечения определенных данных из столбца данных SQL Server XML - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь выполнить запрос так, чтобы набор строк возвращал содержимое элемента.ниже мой запрос и образец данных в столбце XML.все, что возвращается в столбце Address, это все NULL.Но я знаю, что в этом элементе есть данные в таблице.Что я делаю не так.

WITH XMLNAMESPACES( 'http://schemas.xmlsoap.org/soap' AS  "soap")

SELECT  
Data.value('(/soap:Envelope/soap:Body/Report/Location/Address/node())[1]', 'nvarchar(max)') as Address
FROM Mytable

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body>
        <Report>
          <Location>
            <Address>600 BENNETT ST</Address>
          </Location>
        </Report>
      <soap:Body>
<soap:Envelope>

1 Ответ

0 голосов
/ 10 мая 2011

Я думаю, что у вас неправильное пространство имен XML - вы пропускаете закрывающий .../envelope. Кроме того, кажется, что вы не можете использовать "мыло" в качестве псевдонима пространства имен XML в XQuery - не знаю почему.

Попробуйте это:

;WITH XMLNAMESPACES('http://schemas.xmlsoap.org/soap/envelope/' AS se)
SELECT  
   Data.value('(/se:Envelope/se:Body/Report/Location/Address/text())[1]', 'nvarchar(max)') 
     AS 'Address'
FROM Mytable

В моем тестовом случае, похоже, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...