PATH模式中生成XML使用來自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>
的輸出元件爲中心的XML,其中在所得到的行集中每個列的值被包裹在一個行元素。由於SELECT子句未爲列名指定任何別名,因此生成的子元素名稱與SELECT子句中的相應列名稱相同。
對於行集中的每一行添加一個標籤。
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,啓動,長度,add_string) 參數或參數 source_string 源字符串進行修改。 開始 在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 |
-----------------------------------
參見https://stackoverflow.com/questions/21623593/what-is-the-meaning-of-select-for-xml-path-1-1 – ChrisF
令人難以置信的是,我開始了一個錯誤的問題的賞金,哈哈。 – user798719
我爲此做了一個[SqlFiddle頁面](http://sqlfiddle.com/#!18/442cc/4),看它在現實生活中的工作。希望它能幫助別人。 – Sabuncu