SQL Server 將Id相同的字段合並,並且以逗號隔開


 

例如:有表MO_Cook,字段:FoodRoom,name  

有如下數據:

要求:將FoodRoom中值相同的字段合並成一行,並將name的值用逗號隔開。

需要用到:STUFF函數。

查詢語句如下:

 select FoodRoom,
        stuff((select ','+name from  MO_Cook  
            where c.FoodRoom=FoodRoom 
            for xml path('')),1,1,'') as CookNames   
 from MO_Cook c   
 group by c.FoodRoom  

 

查詢結果如下:

 

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 數據類型,則返回二進制數據。


備注 
如果開始位置或長度值是負數,或者如果開始位置大於第一個字符串的長度,將返回空字符串。如果要刪除的長度大於第一個字符串的長度,將刪除到第一個字符串中的第一個字符。 
如果結果值大於返回類型支持的最大值,則產生錯誤。

 

示例:

示例說明:第一個字符串 abcdef 中,刪除從第3個位置(字符 c)開始的兩個字符(字符cd),即第一個字符變為:abef。

     然后在第一個字符串刪除的開始位置3(字符b的后面)插入第二個字符串(ijklmn),即新的字符串為:abijklmnef。

 


免責聲明!

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



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