ฉันมีค่า 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
ค่าเป็นสตริงเดียวโดยไม่ต้องใช้สคริปต์ที่ไม่สะดวกสำหรับแต่ละรายการ