FOR XML PATH 的用法介紹

2022-07-20 14:42:14 字數 1747 閱讀 2948

一.for xml path 簡單介紹

那麼還是首先來介紹一下for xml path ,假設現在有一張興趣愛好表(hobby)用來存放興趣愛好,表結構如下:

接下來我們來看應用for xml path的查詢結果語句如下:

select * from @hobby for xml path

結果:1爬山2

游泳3美食由此可見for xml path 可以將查詢結果根據行輸出成xml各式!

那麼,如何改變xml行節點的名稱呢?**如下:

select * from @hobby for xml path('myhobby')

結果一定也可想而知了吧?沒錯原來的行節點變成了我們在path後面括號()中,自定義的名稱,結果如下:1爬山

2游泳3美食

這個時候細心的朋友一定又會問那麼列節點如何改變呢?還記的給列起別名的關鍵字as嗎?對了就是用它!**如下:

select hobbyid as 'mycode',hname as 'myname' from @hobby for xml path('myhobby')

那麼這個時候我們列的節點名稱也會程式設計我們自定義的名稱 與結果如下:1爬山

2游泳3美食

這時,我們的要求是查詢學生表,顯示所有學生的愛好的結果集,**如下:

select b.sname,left(stulist,len(stulist)-1) as hobby from (

select sname,

(select hobby+',' from student

where sname=a.sname

for xml path('')) as stulist

from student a

group by sname

) b

結果如下:

分析: 好的,那麼我們來分析一下,首先看這句:

select hobby+',' from student

where sname=a.sname

for xml path('')

這句是通過for xml path 將某一姓名如張三的愛好,顯示成格式為:「 愛好1,愛好2,愛好3,」的格式!

那麼接著看:

select b.sname,left(stulist,len(stulist)-1) as hobby from (

select sname,

(select hobby+',' from student

where sname=a.sname

for xml path('')) as stulist

from student a

group by sname

) b剩下的**首先是將表分組,在執行for xml path 格式化,這時當還沒有執行最外層的select時查詢出的結構為:

可以看到stulist列裡面的資料都會多出乙個逗號,這時隨外層的語句:select b.sname,left(stulist,len(stulist)-1) as hobby  就是來去掉逗號,並賦予有意義的列明!

SQL中 FOR XML PATH 函式用法

假設現在有一張興趣愛好表 hobby 用來存放興趣愛好,表結構如下 按xml格式輸出查詢結果 select from dbo.hobby for xml path 自定義xml行節點名稱 select from dbo.hobby for xml path myhobby 自定義xml列節點名稱 s...

FOR XML PATH 語句的應用

大家都知道在sql server中利用 for xml path 語句能夠把查詢的資料生成xml資料,下面是它的一些應用示例。declare temptable table userid int,username nvarchar 50 insert into temptable userid us...

FOR XML PATH 語句的應用

大家都知道在sql server中利用 for xml path 語句能夠把查詢的資料生成xml資料,下面是它的一些應用示例。declare temptable table userid int,username nvarchar 50 insert into temptable userid us...