40 votes

Requête XML dans SQL Server 2008

Je commence tout juste à utiliser XML dans SQL Server 2008. J'ai les données dans XML, mais j'ai du mal à trouver de bons exemples d'interrogation des données. Quelqu'un peut-il m'indiquer un bon endroit pour commencer? Par exemple, je souhaiterais rechercher toutes les lignes du serveur SQL contenant un certain critère dans le XML, comme toutes les lignes dont le XML contient une altitude supérieure à 10 000.

39voto

marc_s Points 321990

J'ai vraiment plaisir à Alex d'Homère, l'intro de SQL Server 2005 XQuery et XML DML - Partie 1 (tout à fait qu'une bouchée!) sur codeguru.com. Tout est toujours parfaitement valide dans SQL Server 2008, trop.

Ne pas savoir beaucoup au sujet de votre structure (nous montrer un exemple XML!), vous pouvez essayer d'utiliser une requête comme ceci:

select
  (list of fields)
from
  MyTable
where
  MyXmlField.value('(/root/altitude)[1]', 'int') > 10000

Vous pouvez utiliser le .valeur de la fonction XML pour extraire une valeur donnée de votre champ XML, basé sur une expression XPath (ici: /root/altitude). Vous devez également définir quel type vous êtes l'espoir d'obtenir de retour (éventuellement sur la base d'un schéma XML), et cela vous donne une valeur de ce type que vous pouvez ensuite utiliser normalement dans n'importe quelle instruction SQL et d'expression.

Marc

12voto

RBarryYoung Points 23349

Les ateliers XML de Jacob Sebastian sont la norme de référence en matière d'exemples gratuits en ligne d'interrogation SQL XML, ici: http://beyondrelational.com/blogs/jacob/archive/2007/12/20/xml-workshops.aspx

1voto

Mladen Prajdic Points 10337

Je pense que cette page de support XML dans Microsoft SQL Server 2005 est votre meilleur endroit pour commencer. cela n'a pas changé pour la version 2008.

Pour des réponses spécifiques, vous devez fournir votre code XML.

1voto

ahains Points 1684

En règle générale, vous utiliseriez la méthode .exist () si vous souhaitez rechercher des lignes qui correspondent à certains critères XML mais ne doivent pas renvoyer le document XML. Cela permet une utilisation optimisée de l'index XML (si vous en avez créé un), alors que le moteur doit toucher l'instance XML réelle dans la plupart des autres cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X