J'ai une table qui contient un champ XML. Le XML typique qu'il contient est;Utilisation du type de données XML SQL Server
<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 environ 50 lignes, je suis seulement préoccupé par deux champs, Omid (clé primaire int) et omText (mes données xml).
Ce que je suis en train de réaliser est une façon de dire, à travers toutes les données XML dans toute la table ... me donner tous les xmlElements où le titre est X. Ou me donner un compte de J'utilise les types de données XML VALUE et QUERY pour extraire 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
Ce qui fonctionne uniquement lorsque l'ID que je recherche est le premier dans le document. Il ne semble pas chercher tout le xml. Fondamentalement, le résultat revient avec une ligne pour chaque entrée de la TABLE, alors que je pense avoir besoin d'une ligne pour chaque ELEMENT correspondant ... Je ne sais pas trop comment commencer à écrire un groupe pour cela.
Je commence à me sentir comme si je rendais cela plus difficile que nécessaire ...... pensées & idées s'il vous plaît.
C'est ..... Vous êtes une star. Bravo :) Ne supposez pas que vous pouvez me diriger vers des ressources décentes pour lire sur la manipulation SQL XML ??? – GordonB
Content de pouvoir aider, Gordon! Le meilleur article XML XML DML que j'ai trouvé jusqu'à présent est assez ancien, mais toujours très utile: http://www.15seconds.com/Issue/050803.htm –
Ou ici ceci peut-être: http://www.sqlservercentral.com/ Articles/SQL + Server + 2005/XML / –