日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlserver结果集转为字符串

發布時間:2024/8/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver结果集转为字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

比如有語句select?username?from?Employee
返回結果是:
username
張三
李四
王五
怎么輸出一個字符串類似:
張三,李四,王五

答:

declare @s varchar(1000) select @s=isnull(@s+',','')+username from Employee select @s as username -------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2010-03-31 00:38:11 -- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation -- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2) -------------------------------------------------------------------------- --> 生成測試數據表:EmployeeIF NOT OBJECT_ID('[Employee]') IS NULLDROP TABLE [Employee] GO CREATE TABLE [Employee]([username] NVARCHAR(10)) INSERT [Employee] SELECT N'張三' UNION ALL SELECT N'李四' UNION ALL SELECT N'王五' GO --SELECT * FROM [Employee]-->SQL查詢如下:DECLARE @S VARCHAR(100) SELECT @S=ISNULL(@S+',','')+[username] FROM [Employee] PRINT @S --RESULT: --張三,李四,王五

另外一個

請教各位大大?如何將 '01,02,03,04' 轉換為1列的結果集 01 02 03 04 /* 拆分字符串 * */ --拆分單列+序號 --方法一:利用數字輔助表 if object_id('fn_SplitTSQL')is not null drop function fn_SplitTSQL GO create FUNCTION dbo.fn_SplitTSQL(@s NVARCHAR(MAX), @split NCHAR(1)) RETURNS TABLE AS RETURNSELECTn - LEN(REPLACE(LEFT(array, n), @split, '')) + 1 AS rn,SUBSTRING(array, n,CHARINDEX(@split, array + @split, n) - n) AS colFROM (SELECT @s AS array) AS DJOIN dbo.NumsON n <= LEN(array)AND SUBSTRING(@split + array, n, 1) = @split; GO--方法二:直接拆分 if object_id('f_split')is not null drop function f_split go create function f_split ( @s varchar(8000), --待分拆的字符串 @split varchar(10) --數據分隔符 )returns table asreturn(select Row_number()over(order by Number) rn ,substring(@s,number,charindex(@split,@s+@split,number)-number)as colfrom master..spt_valueswhere type='p' and number<=len(@s+'a') and charindex(@split,@split+@s,number)=number) goselect * from dbo.f_split('11,2,3',',') select * from dbo.fn_SplitTSQL('11,2,3',',') GO--拆分多列 if object_id('fn_MutiSplitTSQL')is not null drop function fn_MutiSplitTSQL GO create FUNCTION dbo.fn_MutiSplitTSQL (@s NVARCHAR(MAX), @split NCHAR(1) ,@Sub@split NCHAR(1)= N',') RETURNS TABLE AS RETURNselect * from (SELECT d.rn ,'col'+ cast( n - LEN(REPLACE(LEFT(col, n), @Sub@split, '')) + 1 as varchar(10)) AS attribute, SUBSTRING(col, n, CHARINDEX(@Sub@split, col + @Sub@split, n) - n) AS value FROM ( SELECT n - LEN(REPLACE(LEFT(array, n), @split, '')) + 1 AS rn, SUBSTRING(array, n, CHARINDEX(@split, array + @split, n) - n) AS col FROM (SELECT @s AS array) AS D JOIN dbo.Nums a ON n <= LEN(array) AND SUBSTRING(@split + array, n, 1) = @split ) AS D JOIN dbo.Nums a ON n <= LEN(col) AND SUBSTRING(@Sub@split + col, n, 1) = @Sub@split ) as dPIVOT(max(value) FOR attribute IN(col1,col2 ,col3,col4,col5 )) AS P GOselect col1,col2,col3,col4from dbo.fn_MutiSplitTSQL('$092-1350,099201-080901,12050720,2012-6-11$092-0970,099204-072301,12050734,2012-6-11$','$',',') GO

http://bbs.csdn.net/topics/390241555

http://bbs.csdn.net/topics/330192048

www.im1024.com

轉載于:https://www.cnblogs.com/rash/archive/2012/11/06/2757436.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的sqlserver结果集转为字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。