精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SQL中的for xml path,你了解它嗎?

數據庫 其他數據庫
STUFF()函數用于刪除指定長度的字符,并可以在指定的起點處插入另一組字符。STUFF()函數中如果開始位置或長度值是負數,或者如果開始位置大于第一個字符串的長度,將返回空字符串。如果要刪除的長度大于第一個字符串的長度,將刪除到第一個字符串中的第一個字符。

最近出的每日一題里面,有一道是關于合并同類型數據為一行的題,使用SQL Server 2017版本及以上的直接使用STRING_AGG()函數即可,但是2016版本以下是沒有這個功能的,那該如何求解?

今天就給大家介紹一下FOR XML PATH,它就是用來處理低版本數據庫中數據合并的,是一個比較古老的功能了,新版本中也依然還能使用。

FOR XML PATH是什么

FOR XML PATH 是將查詢結果集以XML形式展現,將多行的結果,展示在同一行。

我們用實例來給大家介紹它的神奇之處。

創建測試數據

我們創建一個統計學生愛好的表

CREATE TABLE Stu_Hobby(Stu_Name NVARCHAR(20),--姓名Age INT,--年齡Hobby NVARCHAR(20)  --愛好)INSERT INTO Stu_HobbyVALUES  ( N'張三',19,N'踢足球'), ( N'張三',19,N'打籃球'), ( N'張三',19,N'游泳'), ( N'李四',21,N'看電影'), ( N'李四',21,N'閱讀'), ( N'王五',22,N'唱歌'), ( N'王五',22,N'玩游戲'), ( N'馬六',19,N'踢足球'), ( N'趙七',20,N'爬山'), ( N'趙七',20,N'跑步')

(提示:可以左右滑動代碼)

查詢學生愛好表Stu_Hobby里面的數據:

圖片

使用方法介紹

測試數據建立好后,我們開始對這個表里面的數據進行查詢,并使用上FOR XML PATH。

SELECT *FROM dbo.Stu_Hobby FOR XML PATH;

結果如下:

圖片

它會生成一段XML代碼,我們點擊這行代碼會彈出一整個XML的頁面,由于篇幅較長,我們只截取一部分,具體如下:

圖片

此外我們還可以在FOR XML PATH的后面寫參數,如果后面接參數,會將節點換成參數名稱,例如:

SELECT *FROM dbo.Stu_Hobby FOR XML PATH(hobby)

結果如下圖:

圖片

已經變成了我們添加的參數了。

跟我們實際需求相接近的是下面這個功能

我們可以單獨輸出某個字段的值,例如我們想看看學生愛好表中Hobby這一列具體有一些什么值,可以這樣寫:

SELECT Hobby+'、'FROM dbo.Stu_Hobby FOR XML PATH('')

注意:上面的+是字段拼接,就是將兩個字符串用+連成一個字符串。然后我們把XML中的給去掉。

結果如下:

圖片

可以看到我們寫的所有愛好都給列出來了,沒有去掉重復的,可以理解成把列里的值都顯示出來了。 

具體實際應用

我們現在想把上面的學生表里每個學生的愛好單獨顯示一行,愛好用"、"隔開。

SELECTA.Stu_Name,A.Age,(SELECT Hobby+'、'  FROM [dbo].Stu_HobbyWHERE--必須加的匹配條件Stu_Name=A.Stu_Name AND Age=A.Age  FOR XML PATH('')) AS HobbyFROM [dbo].Stu_Hobby AGROUP BY A.Stu_Name,A.Age

見證奇跡的時刻到了!!!

圖片

對比我們先前建的表,這里已經將Hobby列的數據按每個學生變成了一行。

上面的WHERE條件是必須要的,如果去掉會怎么樣呢?我們把WHERE條件注釋掉看看會怎么樣?

SELECTA.Stu_Name,A.Age,(SELECT Hobby+'、'FROM [dbo].Stu_Hobby--WHERE--必須加的匹配條件--Stu_Name=A.Stu_Name AND Age=A.AgeFOR XML PATH('')) AS HobbyFROM [dbo].Stu_Hobby AGROUP BY A.Stu_Name,A.Age

結果如下:

圖片

就會將Hobby列所有值都顯示出來,很顯然這不是我們要的結果

代碼優化

不知道小伙伴們有沒有發現Hobby列的結果尾部多了一個"、",看著好別扭,有沒有什么辦法將它去掉呢?答案是肯定的。

先用一個LEFT()和LEN()函數來處理一下Hobby列

SELECTT.Stu_Name,T.Age,LEFT(T.Hobby,LEN(T.Hobby)-1) AS HobbyFROM(SELECTA.Stu_Name,A.Age,(SELECT Hobby+'、'FROM [dbo].Stu_HobbyWHERE--必須加的匹配條件Stu_Name=A.Stu_Name AND Age=A.AgeFOR XML PATH('')) AS HobbyFROM [dbo].Stu_Hobby AGROUP BY A.Stu_Name,A.Age) T

結果如下:

圖片

這樣我們的需求就得到了完美解決,但是這個代碼有點長額,能不能簡短一點呀?答案也是肯定滴!在將代碼精簡之前,我們需要先給大家介紹一個配合使用的函數:

STUFF()

STUFF()函數的作用

STUFF()函數用于刪除指定長度的字符,并可以在指定的起點處插入另一組字符。STUFF()函數中如果開始位置或長度值是負數,或者如果開始位置大于第一個字符串的長度,將返回空字符串。如果要刪除的長度大于第一個字符串的長度,將刪除到第一個字符串中的第一個字符。

STUFF()函數的語法

STUFF ( character_expression , start , length ,character_expression )

參數解釋

character_expression:一個字符數據表達式。character_expression 可以是常量、變量,也可以是字符列或二進制數據列。

start :一個整數值,指定刪除和插入的開始位置。如果 start 或 length 為負,則返回空字符串。如果 start 比第一個 character_expression 長,則返回空字符串。start 可以是 bigint 類型。

length:一個整數,指定要刪除的字符數。如果 length 比第一個 character_expression 長,則最多刪除到最后一個 character_expression 中的最后一個字符。length 可以是 bigint 類型。

返回類型

如果 character_expression 是受支持的字符數據類型,則返回字符數據。如果 character_expression 是一個受支持的 binary 數據類型,則返回二進制數據。

注意事項

1、如果開始位置或長度值是負數,或者如果開始位置大于第一個字符串的長度,將返回空字符串。如果要刪除的長度大于第一個字符串的長度,將刪除到第一個字符串中的第一個字符。

2、如果結果值大于返回類型支持的最大值,則產生錯誤。

--以上信息來源微軟官方文檔

這定義看的頭暈,我們還是來看看怎么使用吧

實例:

SELECT STUFF('abcdefg',1,0,'1234') --結果為'1234abcdefg'SELECT STUFF('abcdefg',1,1,'1234') --結果為'1234bcdefg'SELECT STUFF('abcdefg',2,1,'1234') --結果為'a1234cdefg'SELECT STUFF('abcdefg',2,2,'1234') --結果為'a1234defg'

說了這么多,我們看看STUFF怎么解決我們上面的問題吧,上代碼:

SELECTA.Stu_Name,A.Age,STUFF((SELECT '、'+HobbyFROM [dbo].Stu_HobbyWHERE--必須加的匹配條件Stu_Name=A.Stu_Name AND Age=A.Age    FOR XML PATH('')),1,1,'') AS HobbyFROM [dbo].Stu_Hobby AGROUP BY A.Stu_Name,A.Age

是不是比LEFT簡短一些啦?我們看一下結果是不是我們想要的。

圖片

完美! 

好了,FOR XML PATH就介紹到這里了,小伙伴可以對比以上兩種優化的方法,自行比較哪種方式更加簡單易懂。

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2022-08-03 08:11:58

數據測試同類型

2023-06-08 11:57:15

Matter協議家庭智能

2024-01-08 08:27:11

注解Bean代理

2021-01-15 07:44:21

SQL注入攻擊黑客

2024-08-22 08:17:55

C#工具循環

2020-11-20 07:58:04

Java

2023-05-06 08:53:13

2012-02-06 13:52:33

JavaScript

2023-11-09 08:22:38

2019-09-02 08:39:02

路由器RAM內存

2017-12-07 15:00:00

筆記本OLED屏幕

2021-07-27 06:49:11

C#存儲檢索

2021-11-26 08:07:16

MySQL SQL 語句數據庫

2022-04-26 09:01:45

運算符TypeScript代碼

2024-04-15 00:02:00

Java補丁技術

2010-12-20 09:26:44

SQL索引

2019-10-31 08:36:59

線程內存操作系統

2021-01-07 05:40:13

BLE模塊Android

2025-04-29 07:07:00

邊緣AI人工智能IT設備

2024-01-18 09:07:04

Errors函數Golang
點贊
收藏

51CTO技術棧公眾號

久久久精品国产| 美女高潮视频在线看| 精品无人乱码一区二区三区 | 99这里有精品视频| 免费网站在线观看人| 久久精品亚洲成在人线av网址| 天堂va蜜桃一区二区三区| 欧美福利视频一区| 国产在线精品一区二区中文 | 久久综合加勒比| 成人好色电影| 亚洲欧美卡通另类91av| 欧美不卡123| 永久久久久久| wwwwww在线观看| 色综合www| 亚洲高清在线精品| 91精品视频免费观看| wwwwww日本| sm久久捆绑调教精品一区| 国产成人精品一区二区三区网站观看| 欧美人与禽zozo性伦| 精品无码久久久久久久动漫| 欧美片一区二区| 国产精品久久久久久久久久久久久久久| 蜜桃视频在线观看一区| 亚洲精品一区二区三区婷婷月| 国内精品久久国产| 中文字字幕在线观看| 欧美男男gaytwinkfreevideos| 国产精品毛片久久久久久久| 欧美性受xxxx黑人猛交| 日韩精品一区二区三区高清免费| 高h视频在线| 日本美女一区二区三区| 亚洲天堂男人的天堂| 欧美,日韩,国产在线| 天天干天天色天天| 激情久久中文字幕| 欧美精品一区二区三区蜜臀| 国产精品久久..4399| 午夜激情小视频| 老司机久久99久久精品播放免费| 亚洲欧洲高清在线| 国产麻花豆剧传媒精品mv在线| 国产三级伦理片| 亚洲精品国产偷自在线观看| 日韩欧美成人午夜| 黄色一级视频片| 男人的天堂在线视频| 日韩成人午夜电影| 日韩中文字幕在线视频| xxww在线观看| 国产经典自拍视频在线观看| www.亚洲免费av| 日本人成精品视频在线| 精品人妻中文无码av在线| 日本一区二区中文字幕| 亚洲免费三区一区二区| 精品无人区一区二区三区竹菊| 日日夜夜操视频| 精品国产91久久久久久浪潮蜜月| 午夜精品在线看| 日本高清不卡一区二区三| 91精东传媒理伦片在线观看| 韩国一区二区三区在线观看| 亚洲美女久久久| 久久人人爽人人片| 福利小视频在线| 国产欧美日韩另类视频免费观看| 久久久免费av| 国产精品无码永久免费不卡| 伦一区二区三区中文字幕v亚洲| 久久色成人在线| 成人黄色网免费| 久久久精品福利| 中文字幕人成人乱码| 日韩精品极品在线观看| www.51色.com| 日韩电影免费观| 亚洲黄一区二区三区| 欧美精品尤物在线| 亚洲xxxx天美| 久久国产日韩欧美精品| 日本欧美一二三区| 中文字幕一区二区免费| 国产综合久久久久影院| 日韩av成人在线观看| 精品无码一区二区三区的天堂| 九九久久婷婷| 亚洲欧美在线x视频| 黄色片网站免费| 亚洲二区三区不卡| 91精品国产色综合| 五月天av网站| 成人在线国产| 亚洲精品综合久久中文字幕| 五月婷婷欧美激情| 亚洲女娇小黑人粗硬| 精品日韩在线观看| 国产av自拍一区| 伦理一区二区| 最近更新的2019中文字幕| 日韩网站在线播放| 性欧美欧美巨大69| 欧美资源在线观看| 亚洲 欧美 视频| 亚洲国产高清一区| 欧美激情xxxx| 欧美黄色免费看| 视频在线观看一区二区三区| 亚洲资源在线看| av男人天堂网| 国产日韩欧美综合一区| 热re99久久精品国产99热| 国产在线看片| 亚洲激情在线播放| 已婚少妇美妙人妻系列| 电影天堂国产精品| 91国偷自产一区二区使用方法| 视频一区二区在线观看| 久久精品色图| 91片黄在线观看| 久久精品一区二区三区不卡免费视频| 成年人视频免费| 国内成+人亚洲+欧美+综合在线| 国产做受高潮69| 亚洲综合成人av| 99久久精品国产一区二区三区| 国产精品男人的天堂| 久久久久久久久久久影院| 国产一二精品视频| 一本久道久久综合狠狠爱亚洲精品| 成人午夜免费福利| 国产酒店精品激情| 国产精品久久九九| 无码精品黑人一区二区三区| 成人欧美一区二区三区1314| 特大黑人娇小亚洲女mp4| 在线免费观看a视频| 天天射综合影视| 久久综合久久色| 欧美色图五月天| 国产亚洲免费的视频看| 欧美激情亚洲综合| 日本伊人色综合网| 欧美日韩国产综合视频在线| bl视频在线免费观看| 色视频一区二区| 国产黑丝一区二区| 波多野结衣一区| 国产成人97精品免费看片| 91在线视频国产| 国产精品麻豆视频| 一区二区免费av| 我不卡手机影院| 午夜精品久久久久久99热软件| 国产三级国产精品国产国在线观看| 欧美在线亚洲| 国内精品久久久久久久| 亚洲国产精品视频在线| 亚洲一区二区三区四区的| 国产第一页视频| 亚洲人成网77777色在线播放| 在线观看视频99| 精品爆乳一区二区三区无码av| 国产视频欧美| 国产女精品视频网站免费| 精品国产无码一区二区| 97超碰欧美中文字幕| 玩弄中年熟妇正在播放| 妖精视频一区二区三区| 国产精品吊钟奶在线| 后入内射欧美99二区视频| 亚洲成av人片在www色猫咪| 免费不卡的av| 天天综合网91| 99中文字幕| 老司机在线看片网av| 91精品免费观看| 欧美巨胸大乳hitomi| 夜夜精品视频| av蓝导航精品导航| av影院在线免费观看| 亚洲欧美制服第一页| 91国内精品视频| 亚洲一区二区高清| 91精彩刺激对白露脸偷拍| 欧美精品97| 91精品久久久久久久久青青| aa在线视频| 日韩精品免费观看| 国产精品无码天天爽视频| 久久综合一区二区| 伊人成人222| 亚洲欧洲一区二区天堂久久| 欧美精品一区二区三区在线看午夜| 成人免费高清观看| 亚洲天堂网站在线观看视频| 99精品在线视频观看| 色偷偷久久人人79超碰人人澡| 精品久久久噜噜噜噜久久图片 | 中文字幕在线不卡| 男女视频网站在线观看| 欧美系列电影免费观看| 懂色av一区二区三区在线播放| 亚洲欧洲综合在线| 91黄色免费看| 久久视频免费看| 国产精品久久毛片a| 日本一级片在线播放| 国精产品一区一区三区mba视频 | 国产伦精品一区二区三区照片91| 国产超级va在线视频| 在线精品亚洲一区二区不卡| 少妇大叫太粗太大爽一区二区| 红桃视频欧美| 亚洲视频电影| 国产精品视频一区二区三区四蜜臂| 亚洲日本欧美日韩高观看| 天堂网av手机版| 亚洲日本在线a| 在线免费黄色小视频| 久久中文字幕一区二区三区| 日韩国产成人无码av毛片| 国产精品高清一区二区| 国产成人在线视频| 国产在线天堂www网在线观看| 亚洲男人天堂2023| 丰满熟女一区二区三区| 6080国产精品一区二区| 中文字幕一区二区三区人妻四季 | 宅男av一区二区三区| 日韩理论电影中文字幕| 国产在线一区二| 日韩精品久久久久久久软件91 | av在线免费观看网| 日韩av在线播放资源| 不卡的日韩av| 欧美大片一区二区| 国产黄色小视频在线观看| 欧美亚洲日本国产| 欧美精品久久久久久久久46p| 亚洲欧美日本日韩| 精品成在人线av无码免费看| 欧美变态网站| 99久久精品免费看国产四区 | 黄网站色欧美视频| 久久黄色小视频| 亚洲欧美日韩久久| 欧美激情精品久久久久久免费| 日本一区中文字幕| www.天天射.com| 欧美日韩亚洲三区| 国产精品视频一二三四区| 深夜福利久久| 欧美日本亚洲| 精品一区二区三区的国产在线观看| 成人在线一区二区| 国产一区二区三区精品在线观看| 97国产精品视频人人做人人爱| 成年人视频免费在线观看| 中文字幕免费精品一区| 国产黄色一区二区| 精品sm捆绑视频| 免费国产羞羞网站视频| 欧美日免费三级在线| 日韩成人一区二区三区| 一色桃子久久精品亚洲| 永久av免费网站| 亚洲精品一卡二卡| jizz国产免费| 色久优优欧美色久优优| 一级黄色免费片| 日韩精品一区二区三区视频播放 | 欧美一区亚洲二区| 久久精品不卡| 激情伦成人综合小说| 亚洲桃色综合影院| 在线一区亚洲| 99国产精品| 亚洲一级免费在线观看| 国产成人精品免费| 天天色天天综合网| 久久国产主播| 国产3p露脸普通话对白| 另类天堂av| 五月六月丁香婷婷| eeuss鲁片一区二区三区在线观看| 亚洲欧美日韩一二三区| 波多野结衣中文一区| 永久看看免费大片| 极品少妇xxxx精品少妇| 先锋资源在线视频| 久久久久久久久97黄色工厂| 中国一级特黄录像播放| 国产肉丝袜一区二区| 久久中文字幕无码| 欧美日韩一区不卡| 香蕉人妻av久久久久天天| 色诱女教师一区二区三区| 1234区中文字幕在线观看| 国产精品网站视频| 牛牛影视久久网| 法国空姐在线观看免费| 欧美大人香蕉在线| 久久精品视频16| 激情综合网最新| 亚洲欧美视频在线播放| 亚洲乱码一区二区三区在线观看| 欧美激情亚洲色图| 亚洲资源在线观看| 久草视频在线免费看| 日韩欧美有码在线| 中文字幕手机在线视频| 日韩久久免费av| 免费看a在线观看| 色综合久久久久久中文网| 国产视频在线播放| 国产成人一区二区三区电影| 加勒比视频一区| 超碰97在线看| 蜜桃视频在线观看一区| 精品国产无码在线观看| 亚洲午夜一区二区| 国产按摩一区二区三区| 中文字幕无线精品亚洲乱码一区| 日本蜜桃在线观看| 麻豆一区二区在线观看| 欧美亚洲天堂| 亚洲一区二区三区视频| 欧美日韩在线二区| 日韩精品一区中文字幕| 91丨porny丨国产| 国产精品a成v人在线播放| 日韩欧美国产网站| 欧美少妇bbw| 久久久久久久一| 日韩国产激情| 欧美高清视频一区| 国产精品久久久久久久免费软件 | 亚洲欧美变态国产另类| 玖玖在线播放| 久久精彩视频| 乱码第一页成人| 日韩精品卡通动漫网站| 欧美日韩在线免费观看| 国产精华7777777| 亚洲人成免费电影| 日韩一区二区三区免费| 日本精品一区二区| 亚洲欧美日本日韩| 日本欧美一区二区三区不卡视频| 亚洲猫色日本管| 成 人 黄 色 片 在线播放| 欧美大奶子在线| 电影亚洲精品噜噜在线观看| 奇米精品在线| 日韩激情一二三区| 天堂网av2018| 欧美一区二区三区免费视频| 青青草观看免费视频在线| 久久激情五月丁香伊人| av在线播放一区二区| 欧美一区少妇| 精品亚洲成a人在线观看| 草视频在线观看| 欧美午夜寂寞影院| 日本www在线| 粉嫩av一区二区三区免费观看| 日韩理论在线| 欧美日韩黄色一级片| 久久天天做天天爱综合色| 一区二区三区在线免费观看视频 | 久草在线免费福利资源| 国产精品久久激情| 91精品亚洲| 亚洲熟女乱综合一区二区| 天天综合色天天综合色h| 成a人片在线观看www视频| 92看片淫黄大片看国产片| 99在线|亚洲一区二区| 免费人成又黄又爽又色| 在线电影欧美成精品| 成人在线黄色电影| 小说区图片区图片区另类灬| 国产乱妇无码大片在线观看| 国产精品午夜影院| 久久精品国产精品亚洲| 国产一区二区三区不卡av| 在线观看欧美亚洲| 成人高清视频在线观看| 中文字幕av影视| 欧美高清无遮挡| av一区二区在线播放| 亚洲911精品成人18网站| 成人欧美一区二区三区1314| 十八禁一区二区三区| 成人激情电影一区二区| 蘑菇福利视频一区播放|