Obtenir de multiples enregistrements à partir de la colonne xml avec la valeur de() en SQL Server
Ce SQL ne retourne que la première Activité de l'élément. Comment puis-je sélectionner? Si je supprime le [1] dans la requête, j'obtiens une erreur que la "valeur() nécessite un singleton".
DECLARE @myDoc xml
SET @myDoc =
'<Root>
<Activities>
<Activity>This is activity one</Activity>
<Activity>This is activity two</Activity>
<Activity>This is activity three</Activity>
</Activities>
</Root>'
SELECT @myDoc.value('(/Root/Activities/Activity)[1]', 'varchar(100)' )
OriginalL'auteur Graeme | 2009-09-08
Vous devez vous connecter pour publier un commentaire.
Merci Ed, mais j'ai trouvé une version plus facile:
Mais à partir de votre "inutilement complexe" exemple, il semble inquiétant simple..
Qu'est-ce que T et qu'est-ce que C
T est un alias de la table dérivée créée par les nœuds de la fonction. Que les nœuds de la fonction renvoie un morceau de code xml qui inclut l'ensemble de l'Activité des noms de nœuds + valeurs (et le retour de tous les nœuds enfants & valeurs trop si il y en avait). C est un alias de colonne, dans ce cas, il casse le xml en "Activité" nœuds sur chaque ligne de cette colonne.
OriginalL'auteur Graeme
Cela fonctionne, mais semble inutilement complexe. Il peut y avoir un moyen plus facile.
OriginalL'auteur Ed Harper
Voici une autre situation et de la solution: j'étais à la recherche de cette situation où il y a deux éléments à être sélectionnés à l'aide d'une requête.
Vous pouvez modifier cette valeur pour indiquer XMLNamespaces.
La Solution initialement trouvé à :https://social.msdn.microsoft.com/Forums/sqlserver/en-US/35e75e32-9ffb-4a30-8637-2cc928554763/selecting-multiple-values-from-multiple-rows-of-xml?forum=sqlxml
OriginalL'auteur rjose