Udara Eshan Ariyarathne Ответов: 1

Получение данных из столбца XML в SQL server


У меня есть столбец XML в таблице базы данных SQL Server.

я хочу получить результат из этого столбца XML.

Как я могу это сделать Ниже приведен мой столбец таблицы

<string xmlns="http://www.webserviceX.NET">
  <NewDataSet>
    <Table>
      <Country>Sri Lanka</Country>
      <City>Katunayake</City>
    </Table>
    <Table>
      <Country>Sri Lanka</Country>
      <City>Anuradhapura</City>
    </Table>
    <Table>
      <Country>Sri Lanka</Country>
      <City>Batticaloa</City>
    </Table>
    <Table>
      <Country>Sri Lanka</Country>
      <City>Ratmalana</City>
    </Table>
    <Table>
      <Country>Sri Lanka</Country>
      <City>Trincomalee</City>
    </Table>
  </NewDataSet>
</string>


Что я уже пробовал:

SELECT
    [Xml_Data].value('(string/NewDataSet/Table/Country)[1]', 'nvarchar(max)') as FirstName
    ,[Xml_Data].value('(string/NewDataSet/Table/City)[1]', 'nvarchar(max)') as LastName
FROM [AP_DEMO]

1 Ответов

Рейтинг:
12

Suvendu Shekhar Giri

Это из-за того, что XMLNS.
Попробуйте выполнить следующий запрос, и он должен работать идеально.

;WITH XMLNAMESPACES (N'http://www.webserviceX.NET' as X)
SELECT
    [Xml_Data].value('(/X:string/X:NewDataSet/X:Table/X:Country)[1]', 'nvarchar(max)') as FirstName
    ,[Xml_Data].value('(/X:string/X:NewDataSet/X:Table/X:City)[1]', 'nvarchar(max)') as LastName
FROM [AP_DEMO]


Ваш старый запрос все еще будет работать, если вы просто удалите пространство имен xmlns.

Дальнейшее чтение : Добавление пространств имен в запросы с помощью XMLNAMESPACES | Microsoft Docs[^]

Надеюсь, это поможет :)


Udara Eshan Ariyarathne

Большое спасибо Сувенду, ты спас мне жизнь !!!

Suvendu Shekhar Giri

Рад был узнать, что это помогло!
Спасибо :)