Ich habe einen XML-Wert wie diesen:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
</R>
Ich möchte alle verketten IWerte und bringt sie als einzelne Zeichenfolge: ABC....
Jetzt weiß ich, dass ich das XML zerkleinern, die Ergebnisse als knotenloses XML zusammenfassen und .values('text()[1]', ...)auf das Ergebnis anwenden kann :
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)')
;
All dies möchte ich jedoch nur mit XPath / XQuery-Methoden tun, etwa so:
SELECT @MyXml. ? ( ? );
Gibt es so etwas?
Der Grund, warum ich nach einer Lösung in diese Richtung suche, ist, dass mein tatsächliches XML auch andere Elemente enthält, zum Beispiel:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
<J>X</J>
<J>Y</J>
<J>Z</J>
...
</R>
Und ich möchte in der Lage sein, sowohl die IWerte als einzelne Zeichenfolge als auch die JWerte als einzelne Zeichenfolge zu extrahieren, ohne für jedes ein unhandliches Skript verwenden zu müssen.