Я пытаюсь сгладить данные XML в SQL-запросе, но я всегда получаю null.Сглаживание данных xml в sql
Я попробовал крест/внешний применяемый метод, описанный here.
Столбец с данными XML называется Data
.
Я предполагаю, что данные xml с этими ссылками также должны быть добавлены?
Не могли бы вы помочь получить правильный SQL-запрос?
Query Я попытался:
SELECT
v.name
,pref.value('(LocalId/text())[1]', 'nvarchar(10)') as localid
FROM [database].[requests] v
outer apply v.Data.nodes('/DataForm') x(pref)
GO
пример данных XML в этом столбце:
<Dataform xmlns="http://somelongasslink.org/hasalsosomestuffhere" xmlns:i="http://somexlmschemalink/">
<DeleteDate xmlns="http://somelongasslink.org/hasalsosomestuffhere" i:nil="true" />
<LocalId xmlns="http://somelongasslink.org/hasalsosomestuffhere">5325325</LocalId>
...
Возможно, вам также потребуется определить пространство имен «xmlns: i», если вы явно хотите прочитать атрибут «i: nil» ... Upvote from my side – Shnugo
Как бороться с несколькими пространствами имен? Код, который вы предоставили, работает (спасибо за это), но для других атрибутов без пространств имен. Мой пример xml немного неверен для моего случая, поскольку пространство имен ссылок в localid отличается от формы данных. – Exanimis
@Exanimis: вам нужно использовать 'WITH XMLNAMESPACES ('.....' AS ns1, '.......' AS ns2)', а затем использовать те префиксы, определенные в выражениях XPath, –