Der PATH-Modus wird zum Generieren von XML aus einer SELECT-Abfrage verwendet
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>
Die Ausgabe ist elementzentriertes XML, bei dem jeder Spaltenwert im resultierenden Rowset in ein Zeilenelement eingeschlossen wird. Da in der SELECT-Klausel keine Aliase für die Spaltennamen angegeben sind, stimmen die generierten untergeordneten Elementnamen mit den entsprechenden Spaltennamen in der SELECT-Klausel überein.
Für jede Zeile im Rowset wird ein Tag hinzugefügt.
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>
Für Schritt 2: Wenn Sie eine Zeichenfolge mit der Länge Null angeben, wird das Umbruchelement nicht erzeugt.
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
In Schritt 4 verketten wir die Werte.
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
In Schritt 6 gruppieren wir das Datum nach ID.
STUFF (source_string, start, length, add_string) Parameter oder Argumente source_string Die zu ändernde Quellzeichenfolge. start Die Position in der Quellzeichenfolge, um Längenzeichen zu löschen und dann add_string einzufügen. Länge Die Anzahl der Zeichen, die aus source_string gelöscht werden sollen. add_string Die Zeichenfolge, die an der Startposition in den source_string eingefügt werden soll.
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 |
-----------------------------------