Dodaj kolumnę z wartością NULL, aby wygenerować oddzielny węzeł elementu dla każdej kolumny.
SELECT
t.col1 as 'item'
,NULL
,t.col2 as 'item'
,NULL
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Wynik:
<parent>
<item>1</item>
<item>2</item>
<item>3</item>
</parent>
Skrzypce SQL
Dlaczego to działa?
Kolumny bez nazwy są wstawiane jako węzły tekstowe. W tym przypadku wartość NULL jest wstawiana jako węzeł tekstowy między item
węzłów.
Jeśli dodasz rzeczywiste wartości zamiast NULL, zobaczysz, co się dzieje.
SELECT
t.col1 as 'item'
,'1'
,t.col2 as 'item'
,'2'
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Wynik:
<parent>
<item>1</item>1<item>2</item>2<item>3</item></parent>
Innym sposobem określenia kolumny bez nazwy jest użycie znaku wieloznacznego *
jako alias kolumny.
Kolumny z nazwą określoną jako symbol wieloznaczny
W tym przypadku użycie symbolu wieloznacznego nie jest konieczne, ponieważ kolumny z wartościami NULL nie mają nazwy kolumny, ale jest to przydatne, gdy chcesz uzyskać wartości z rzeczywistych kolumn, ale nie chcesz, aby nazwa kolumny była nazwą węzła.