MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat
-- 将多行记录(只能一个列)用指定分隔符分隔 IF(OBJECT_ID('sp_RowsChangeClosBySplit',N'P') IS NOT NULL) DROP PROC sp_RowsChangeClosBySplit GO CREATE PROC sp_RowsChangeClosBySplit @table nvarchar(50), -- 表名 @field nvarchar(50), -- 要拼接的字段 @split varchar(10)=',', -- 分隔符 @where nvarchar(500)='' -- 条件 AS BEGIN DECLARE @sql NVARCHAR(1000) SET @sql='select TOP 1 stuff((select '''+@split+'''+convert(varchar(50),'+@field+') from '+@table+' '+@where+' FOR XML PATH('''')), 1, 1, '''') as cols from '+@table+' group by '+@field PRINT @sql EXEC sp_executesql @sql END
调用:
EXEC dbo.sp_RowsChangeClosBySplit @table = N'pro_Household', -- nvarchar(50) @field = N'ID', -- nvarchar(50) @split = ',', -- varchar(10) @where = N'where id < 10' -- nvarchar(500)
分割后:结果集:
普通查询:
SELECT ID FROM dbo.pro_Household WHERE ID<10
分割钱:结果集
中山赢友网络科技有限公司(http://www.winu.net/)承接IOS、Android、Window Phone 8+、Window 10 App应用开发,IOS、Android、Window Phone 8+游戏开发,.NET/PHP软件系统开发,HTML5网站、游戏、微官网开发。欢迎致电:0760-88809987、18676265646 陈先生。