小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

實例詳述FOR XML PATH(建議收藏)

 靜幻堂 2020-02-14

FOR XML PATH 函數(shù)用法

一.FOR XML PATH 基本介紹

       有時我們進入APP會有調(diào)查登記,有一個或以上可選擇愛好,那我們現(xiàn)在用FOR XML PATH來顯示用戶的愛好情況,假設(shè)有成員表member ,如下圖所示:

語句SELECT * FROM MEMBER查詢出來結(jié)果如上圖所示,現(xiàn)加入FOR XML PATH看下會有什么變化,語句如下:

SELECT * FROM MEMBER FOR XML PATH

點擊進入可查詢詳細情況

由此可見,FOR XML PATH 是可以將查詢結(jié)果以XML格式輸出。

那么,我們可以自定義節(jié)點嗎?先試試

SELECT * FROM MEMBER FOR XML PATH ('m')

結(jié)果顯示行節(jié)點變成了<m>,既然可以修改,那當然path()內(nèi)的值可以修改成其他值。

如果是這樣path('')則表示去掉行節(jié)點。

那列節(jié)點呢?回顧下SELECT  *或 SELECT 列名 ,那也就是說可以從這里改變它

SELECT 編號 BH , 姓名 XM, 性別 sex,年齡 age ,愛好 AHFROM MEMBER FOR XML PATH ('m')

但上面這樣輸出的形式還不是我們想要看到的,怎么能把一些符號可以去掉呢?

讓我們自定義輸出,語句如下:

SELECT '[' 愛好 ']' FROM MEMBER FOR XML PATH('')

輸出結(jié)果:


因為path('')值為空,所以結(jié)果只會顯示一行一個值記錄

如果是int數(shù)據(jù)類型,如年齡,需要轉(zhuǎn)換成字符串

SELECT '[' cast(年齡 as nvarchar) ']', '[' 愛好 ']'FROM MEMBER FOR XML PATH ('')

FOR XML PATH基本使用就介紹到這里,下面看下如何運用

二、結(jié)合GROUP BY 實際應(yīng)用,要求按下圖方式顯示

分析下看如何運用,除了與GROUP BY 結(jié)合使用外還用到STUFF函數(shù),當然也可以用LEFT等函數(shù),我這里只簡單介紹STUFF函數(shù)的使用

STUFF函數(shù)作用:刪除指定長度的字符,或在指定的起點處插入另一組字符。

STUFF ( character_expression , start , length , replaceWith_expression )

character_expression表示:字符數(shù)據(jù)的表達式

start表示:一個整數(shù)值,指定刪除和插入的開始位置

length表示:一個整數(shù)值,指定要刪除的字符數(shù)

 replaceWith_expression表示:字符數(shù)據(jù)的表達式

先看以下語句:

  • select a.編號,a.姓名,愛好=(select ',' 愛好 from member where 編號=a.編號 for xml path(''))from member agroup by a.編號,a.姓名

溫馨提示:上述語句嵌套相關(guān)子查詢將FOR XML PATH結(jié)果數(shù)據(jù)賦值給父查詢“愛好”列

輸出結(jié)果:

注意:必須要加上條件where 編號=a.編號,要不然會以下結(jié)果輸出

現(xiàn)在要想辦法去掉“愛好”列的第一個逗號,此時用到STUFF函數(shù)

  • select a.編號,a.姓名,愛好=STUFF((select ',' 愛好 from member where 編號=a.編號 for xml path('')),1,1,'')from member aGROUP BY a.編號,a.姓名


輸出結(jié)果:

STUFF((select ',' 愛好 from member where 編號=a.編號 for xml path('')),1,1,'')

注釋:STUFF函數(shù)將子查詢“愛好”的字符串內(nèi)容,從第1個字符開始截取,取長度是1,刪除它,然后把結(jié)果賦值給父查詢的列。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多