SQL中 FOR XML PATH 函數用法


SQL中 FOR XML PATH 函數用法

假設現在有一張興趣愛好表(hobby)用來存放興趣愛好,表結構如下:

FOR XML PATH 簡單介紹

--按XML格式輸出查詢結果
select * from dbo.Hobby for xml path
--自定義XML行節點名稱 select * from dbo.Hobby for xml path('MyHobby')
--自定義XML列節點名稱 select hobbyId as 'MyCode', hName as 'MyName' from dbo.Hobby for xml path('MyHobby')
--對字符串類型字段自定義輸出格式 SELECT '[ '+hName+' ]' FROM dbo.Hobby FOR XML PATH('')
--對其他類型的列自定義輸出格式:將它們轉換成字符串格式 select '{'+STR(hobbyId)+'}','[ '+hName+' ]' FROM dbo.Hobby FOR XML PATH('')

查詢結果:

 1 <!--按XML格式輸出查詢結果-->
 2 <row>
 3   <hobbyId>1</hobbyId>
 4   <hName>爬山</hName>
 5 </row>
 6 <row>
 7   <hobbyId>2</hobbyId>
 8   <hName>游泳</hName>
 9 </row>
10 <row>
11   <hobbyId>3</hobbyId>
12   <hName>美食</hName>
13 </row>
14 
15 <!--自定義XML行節點名稱-->
16 <MyHobby>
17   <hobbyId>1</hobbyId>
18   <hName>爬山</hName>
19 </MyHobby>
20 <MyHobby>
21   <hobbyId>2</hobbyId>
22   <hName>游泳</hName>
23 </MyHobby>
24 <MyHobby>
25   <hobbyId>3</hobbyId>
26   <hName>美食</hName>
27 </MyHobby>
28 
29 <!--自定義XML列節點名稱-->
30 <MyHobby>
31   <MyCode>1</MyCode>
32   <MyName>爬山</MyName>
33 </MyHobby>
34 <MyHobby>
35   <MyCode>2</MyCode>
36   <MyName>游泳</MyName>
37 </MyHobby>
38 <MyHobby>
39   <MyCode>3</MyCode>
40   <MyName>美食</MyName>
41 </MyHobby>
42 
43 <!--對字符串類型字段自定義輸出格式-->
44 [ 爬山 ][ 游泳 ][ 美食 ] 45 
46 <!--對其他類型的列自定義輸出格式-->
47 {         1}[ 爬山 ]{         2}[ 游泳 ]{         3}[ 美食 ]
View Code

FOR XML PATH 簡單應用

增加一張學生表,列分別為(stuId,sName,hName),stuID代表學生編號,sName代表學生姓名,hobby列存學生的愛好,表結構如下:

以“愛好1,愛好2,愛好3...”的格式顯示數據

--顯示所有學生的愛好的結果集
select A.sName, (select hName+'' from dbo.StudentHobby where sName=A.sName for xml path('')) as hobbyList from dbo.StudentHobby A group by A.sName --去除逗號顯示
select b.sName, left(B.hobbyList, len(B.hobbyList)-1) as StuHobby from ( select A.sName, (select hName+'' from dbo.StudentHobby where sName=A.sName for xml path('')) as hobbyList from dbo.StudentHobby A group by A.sName )B

查詢結果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM