Tôi có một giá trị XML như thế này:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
</R>
Tôi muốn nối tất cả các Igiá trị và trả về chúng dưới dạng một chuỗi : ABC....
Bây giờ tôi biết rằng tôi có thể hủy bỏ XML, tổng hợp lại các kết quả dưới dạng XML không gật đầu và áp dụng .values('text()[1]', ...)cho kết quả:
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)')
;
Tuy nhiên, tôi chỉ muốn làm tất cả những điều đó bằng cách sử dụng các phương thức XPath / XQuery, đại loại như thế này:
SELECT @MyXml. ? ( ? );
Có cách nào như vậy không?
Lý do tôi đang tìm kiếm một giải pháp theo hướng này là vì XML thực tế của tôi cũng chứa các yếu tố khác:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
<J>X</J>
<J>Y</J>
<J>Z</J>
...
</R>
Và tôi muốn có thể trích xuất cả hai Igiá trị dưới dạng một chuỗi và các Jgiá trị dưới dạng một chuỗi mà không phải sử dụng tập lệnh khó sử dụng cho mỗi giá trị.