Ben böyle bir XML değeri var:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
</R>
Bütün bitiştirmek istiyorum I
değerlere ve tek bir dize olarak döndürür: ABC...
.
Şimdi XML'i parçalayabildiğimi, sonuçları nodeless bir XML olarak toplayabildiğimi ve .values('text()[1]', ...)
sonuca uygulayabildiğimi biliyorum :
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)')
;
Ancak, tüm bunları sadece XPath / XQuery yöntemlerini kullanarak yapmak istiyorum:
SELECT @MyXml. ? ( ? );
Böyle bir yol var mı?
Bu yönde bir çözüm aramamın nedeni, gerçek XML'imin diğer öğeleri de içermesidir, örneğin:
<R>
<I>A</I>
<I>B</I>
<I>C</I>
...
<J>X</J>
<J>Y</J>
<J>Z</J>
...
</R>
Ve her biri için kullanışsız bir komut dosyası kullanmak zorunda kalmadan değerleri I
tek bir dize olarak ve J
değerleri tek bir dize olarak ayıklamak istiyorum .