У мене є таке значення 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
значення як окремий рядок, не використовуючи для кожного громіздкого сценарію.