次のようなXML値があります。
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
</R>
すべてのI
値を連結して、単一の文字列として返しますABC...
。
これで、XMLを細断し、結果をノードレスXMLとして集計し、結果に適用できる.values('text()[1]', ...)
ことがわかりました。
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)')
;
ただし、次のようなXPath / XQueryメソッドのみを使用してすべてを実行したいと思います。
SELECT @MyXml. ? ( ? );
そのような方法はありますか?
この方向で解決策を探している理由は、実際のXMLにも他の要素が含まれているためです。たとえば、
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
<J>X</J>
<J>Y</J>
<J>Z</J>
...
</R>
そして、扱いにくいスクリプトを使用せずに、単一の文字列として値I
と単一の文字列として値の両方を抽出できるようにしたいと思いJ
ます。