De travail avec le Serveur SQL de type de données XML
J'ai une table qui a un champ XML.
Le typique XML qu'il contient;
<things>
<Fruit>
<imageId>39</imageId>
<title>Apple</title>
</Fruit>
<Fruit>
<imageId>55</imageId>
<title>Pear</title>
</Fruit>
<Fruit>
<imageId>76</imageId>
<title>Grape</title>
</Fruit>
</things>
Dans ma table j'ai autour de 50 lignes, je me préoccupe seulement de deux champs, omId (int primary key) et omText (mes données xml).
Ce que je suis en train de réaliser est une manière de dire, à travers toutes les données xml dans l'ensemble de la table... donnez-moi tous les xmlElements où le titre est X. Ou me donner un compte de tous les éléments qui utilisent un imageId de 55 ans.
Je suis en utilisant le type de données XML de la VALEUR et des fonctions de REQUÊTE pour récupérer les données.
select omID,
omText.query('/things/Fruit')
,cast('<results>' + cast(omText.query('/things/Fruit') as varchar(max)) + '</results>' as xml) as Value
from dbo.myTable
where omText.value('(/things/Fruit/imageId)[1]', 'int') = 76
Qui ne marche que si l'id que je recherche, est le premier dans le document. Il ne semble pas rechercher tous les xml.
Fondamentalement le jeu de résultats est de retour avec une ligne pour chaque entrée dans la TABLE, wheras je pense que j'ai besoin d'avoir une ligne pour chaque appariés ÉLÉMENT... Pas vraiment sûr de savoir comment commencer l'écriture d'un groupe par pour cette tho.
Je commence à me sentir comme je suis en train de faire ce plus difficile qu'il doit être...... pensées & des idées s'il vous plaît.
OriginalL'auteur GordonB | 2009-07-31
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si je suis tout à fait compris votre question ici ou cherchez-vous cela? Vous prenez toutes les /choses/Fruits éléments d'un "nœuds" et de la croix se joindre à eux contre votre "base de données" dans le myTable - le résultat serait d'une ligne par élément XML XML champ de données:
Est-ce que vous cherchez?
Marc
Content d'avoir pu aider, Gordon! Le meilleur SQL XML DML article que j'ai trouvé jusqu'à présent est assez vieux, mais tout de même très utile: 15seconds.com/Issue/050803.htm
Ou ce ici peut-être: sqlservercentral.com/Articles/SQL+Serveur+2005/XML
OriginalL'auteur marc_s