Consultar XML criando nomes de campo sem saber nomes de nós
Se eu tiver uma tabela SQL SERVER 2012 contendo um tipo de campo XML. Os registros que ele pode conter são os seguintes.
Eu simplifiquei o meu problema para o seguinte.
Registro 1:
ID_FIELD='nn1'
XML_FIELD=
<KNOWN_NAME_1>
<UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
<UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
... Maybe more ...
</KNOWN_NAME_1>
Registro 2:
ID_FIELD='nn2'
XML_FIELD=
<KNOWN_NAME_2>
<UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
<UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
... Maybe more unknown fields ...
</KNOWN_NAME_2>
Eu quero saída não xml:
UNKNOWN_NAME1 | UNKNOWN_NAME2 | ETC
-----------------------------------
Some Value Some value
Para um valor de raiz conhecido (por exemplo, KNOWN_NAME_1)
Ou seja Se eu novo os valores do nó (o que eu não) eu poderia
SELECT
XMLData.Node.value('UNKNOWN_NAME1[1]', 'varchar(100)') ,
XMLData.Node.value('UNKNOWN_NAME2[1], 'varchar(100)')
FROM FooTable
CROSS APPLY MyXmlField.nodes('//KNOWN_NAME_1') XMLData(Node)
-- WHERE SOME ID value = 'NN1' (all XML records have a separate id)
Tudo é bom, porém eu quero fazer isso para todos os nós (quantidade desconhecida) sem saber os nomes dos nós. A raiz conterá apenas nós que não serão mais profundos.
Isso é possível no SQL?
Eu olhei para isso, mas duvido que eu possa ter direitos suficientes para implementá-lo.