Tryb PATH służy do generowania XML z zapytania SELECT
1. SELECT
ID,
Name
FROM temp1
FOR XML PATH;
Ouput:
<row>
<ID>1</ID>
<Name>aaa</Name>
</row>
<row>
<ID>1</ID>
<Name>bbb</Name>
</row>
<row>
<ID>1</ID>
<Name>ccc</Name>
</row>
<row>
<ID>1</ID>
<Name>ddd</Name>
</row>
<row>
<ID>1</ID>
<Name>eee</Name>
</row>
Dane wyjściowe to XML zorientowany na elementy, w którym każda wartość kolumny w wynikowym zestawie wierszy jest zawinięta w element wiersza. Ponieważ klauzula SELECT nie określa aliasów dla nazw kolumn, wygenerowane nazwy elementów potomnych są takie same jak odpowiadające im nazwy kolumn w klauzuli SELECT.
Do każdego wiersza w zestawie wierszy dodawany jest znacznik.
2.
SELECT
ID,
Name
FROM temp1
FOR XML PATH('');
Ouput:
<ID>1</ID>
<Name>aaa</Name>
<ID>1</ID>
<Name>bbb</Name>
<ID>1</ID>
<Name>ccc</Name>
<ID>1</ID>
<Name>ddd</Name>
<ID>1</ID>
<Name>eee</Name>
W kroku 2: Jeśli określisz ciąg o zerowej długości, element owijający nie zostanie utworzony.
3.
SELECT
Name
FROM temp1
FOR XML PATH('');
Ouput:
<Name>aaa</Name>
<Name>bbb</Name>
<Name>ccc</Name>
<Name>ddd</Name>
<Name>eee</Name>
4. SELECT
',' +Name
FROM temp1
FOR XML PATH('')
Ouput:
,aaa,bbb,ccc,ddd,eee
W kroku 4 łączymy wartości.
5. SELECT ID,
abc = (SELECT
',' +Name
FROM temp1
FOR XML PATH('') )
FROM temp1
Ouput:
1 ,aaa,bbb,ccc,ddd,eee
1 ,aaa,bbb,ccc,ddd,eee
1 ,aaa,bbb,ccc,ddd,eee
1 ,aaa,bbb,ccc,ddd,eee
1 ,aaa,bbb,ccc,ddd,eee
6. SELECT ID,
abc = (SELECT
',' +Name
FROM temp1
FOR XML PATH('') )
FROM temp1 GROUP by iD
Ouput:
ID abc
1 ,aaa,bbb,ccc,ddd,eee
W kroku 6 grupujemy datę według identyfikatora.
STUFF (ciąg_źródłowy, początek, długość, ciąg_dodany) Parametry lub argumenty ciąg_źródłowy Ciąg źródłowy do modyfikacji. start Pozycja w łańcuchu_źródłowym, aby usunąć znaki długości, a następnie wstawić łańcuch_odpowiedzi. długość Liczba znaków do usunięcia z łańcucha_źródłowego. add_string Sekwencja znaków do wstawienia do łańcucha_źródłowego w pozycji początkowej.
SELECT ID,
abc =
STUFF (
(SELECT
',' +Name
FROM temp1
FOR XML PATH('')), 1, 1, ''
)
FROM temp1 GROUP by iD
Output:
-----------------------------------
| Id | Name |
|---------------------------------|
| 1 | aaa,bbb,ccc,ddd,eee |
-----------------------------------