โหมด PATH ใช้ในการสร้าง XML จากแบบสอบถามแบบใช้เลือกข้อมูล
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>
เอาท์พุทเป็นองค์ประกอบเป็นศูนย์กลาง XML ที่แต่ละค่าของคอลัมน์ใน rowset ผลลัพธ์ถูกห่อในองค์ประกอบแถว เนื่องจากส่วนคำสั่ง SELECT ไม่ได้ระบุชื่อแทนใด ๆ สำหรับชื่อคอลัมน์ชื่อองค์ประกอบลูกที่สร้างขึ้นจะเหมือนกับชื่อคอลัมน์ที่เกี่ยวข้องในส่วนคำสั่ง SELECT
สำหรับแต่ละแถวใน rowset จะมีการเพิ่มแท็ก
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>
สำหรับขั้นตอนที่ 2: หากคุณระบุสตริงที่มีความยาวเป็นศูนย์องค์ประกอบการตัดจะไม่ถูกสร้างขึ้น
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
ในขั้นตอนที่ 4 เรากำลังเชื่อมโยงค่าต่างๆ
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
ในขั้นตอนที่ 6 เราจัดกลุ่มวันตาม ID
STUFF (source_string, start, length, add_string) พารามิเตอร์หรืออาร์กิวเมนต์ source_string สตริงต้นทางที่จะแก้ไข start ตำแหน่งใน source_string เพื่อลบอักขระความยาวแล้วใส่ add_string ความยาวจำนวนอักขระที่จะลบจาก source_string add_string ลำดับของอักขระที่จะแทรกลงใน source_string ที่ตำแหน่งเริ่มต้น
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 |
-----------------------------------