2009-10-05 8 views
1

Dans une colonne XmlData de SQL Server 2008 sans schéma, comment puis-je extraire le premier élément à un niveau de noeud particulier? Par exemple, j'ai:Récupération de la première valeur avec Xquery à l'aide d'un caractère générique

SELECT 
XmlData.value('//*/*[1]','NVARCHAR(6)') 
FROM table 
where XmlData.Exist('//*/*[1]') = 1 

Je suppose que cela ne fonctionne pas parce que s'il y a plusieurs noeuds avec des noms différents au niveau 2, le premier de chacun de ces pourraient être renvoyés (et le value() exige qu'un singleton être sélectionné. comme je ne sais pas ce que les noms des nœuds seront, est-il un moyen de sélectionner toujours quel que soit le premier nœud est au 2e niveau?

Répondre

4

J'ai trouvé la réponse en enchaînant Xquery .query() et .value()

XMLDATA.query('//*/*[1]').value('.[1]','NVARCHAR(6)') 

Ceci renvoie la valeur du premier noeud et fonctionne parfaitement pour mes besoins.

Questions connexes