我有这样的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
值提取为单个字符串,而不必为每个字符串使用笨拙的脚本。