J'ai une valeur XML comme celle-ci:
<R>
  <I>A</I>
  <I>B</I>
  <I>C</I>
  ...
</R>
Je veux concaténer toutes les Ivaleurs et les retourner comme une seule chaîne: ABC....
Maintenant, je sais que je peux déchiqueter le XML, agréger les résultats en tant que XML sans nœud et appliquer .values('text()[1]', ...)au résultat:
SELECT
  (
    SELECT
      n.n.value('text()[1]', 'varchar(50)') AS [text()]
    FROM
      @MyXml.nodes('/R/I') AS n (n)
    FOR XML
      PATH (''),
      TYPE
  ).value('text()[1]', 'varchar(50)')
;
Cependant, je voudrais faire tout cela en utilisant uniquement des méthodes XPath / XQuery, quelque chose comme ceci:
SELECT @MyXml. ? ( ? );
Existe-t-il un tel moyen?
La raison pour laquelle je recherche une solution dans ce sens est que mon XML actuel contient également d'autres éléments, par exemple:
<R>
  <I>A</I>
  <I>B</I>
  <I>C</I>
  ...
  <J>X</J>
  <J>Y</J>
  <J>Z</J>
  ...
</R>
Et je voudrais pouvoir extraire à la fois les Ivaleurs sous forme de chaîne unique et les Jvaleurs sous forme de chaîne unique sans avoir à utiliser un script lourd pour chacune.