国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

[原創]SQL 把表中某一個列按照逗號拼接成一行

2024-07-21 02:48:00
字體:
來源:轉載
供稿:網友
[原創]SQL 把表中某一個列按照逗號拼接成一行

在我們開發的過程中,難免遇到一種場景,把某個表中的的某個列的值拼接成用逗號隔開的一行數據

如圖:我們把UserId列拼接成一行數據

image-------》image

為此我寫了一個存儲過程來解決此類問題。

-- Author: LHM -- Create date: 2015-01-15

-- Description: 把表中某一個列按照逗號拼接成一行 --示例: EXEC [Sp_TableToString] 'cast([UserId] as varchar)','[X_RoleUser]','RoleId=1'

-- ============================================= CREATE PROCEDURE [dbo].[Sp_TableToString] @ColumnName varchar(100), @TableName nvarchar(100), @Filter varchar(1000)='' AS BEGIN DECLARE @sql varchar(500) IF(@Filter<>'') BEGIN SET @Sql= ' SELECT Result= STUFF( ( SELECT '','' + '+@ColumnName+' FROM '+@TableName+ ' WHERE ' +@Filter+ ' FOR xml PATH('''') ), 1, 1, '''') ' END ELSE BEGIN SET @Sql= ' SELECT Result= STUFF( ( SELECT '','' + '+@ColumnName+' FROM '+@TableName+ ' FOR XML PATH('''') ), 1, 1, '''') ' END EXEC (@Sql) END

如果有興趣的朋友可以建立測試表,一下提供建表語句

CREATE TABLE [dbo].[X_RoleUser]( [Id] [int] IDENTITY(1,1) NOT NULL, [RoleId] [int] NOT NULL, [UserId] [int] NOT NULL, [Company_Id] [int] NULL, CONSTRAINT [PK_X_RoleUser] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

GO

添加一些測試數據之后,然后執行存儲過程 EXEC [Sp_TableToString] 'cast([UserId] as varchar)','[X_RoleUser]','RoleId=1' 就可以看到測試效果了。

在這有一個問題就是如果表中的要轉換的字段不是字符串型的話,此時應該利用Cast函數把它轉換成字符串型

希望給遇到此類需求的朋友帶來幫助,謹此記錄。

如果朋友們覺得以后可能會用到的話,歡迎轉載,當然也可以推薦一下,謝謝。

PS:此博文是利用Windows Live Writer 2012編寫,格式效果可能不太好。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌拉特前旗| 湟源县| 仲巴县| 平武县| 崇文区| 宝应县| 龙川县| 个旧市| 平果县| 阿合奇县| 东莞市| 民和| 新巴尔虎左旗| 上蔡县| 虞城县| 文山县| 霸州市| 烟台市| 淳安县| 柏乡县| 仪陇县| 宣武区| 遂宁市| 乌鲁木齐县| 社旗县| 锦州市| 砀山县| 怀仁县| 阿勒泰市| 健康| 东海县| 马关县| 清水县| 西贡区| 滦平县| 蒲城县| 和静县| 长沙市| 财经| 三门峡市| 淮南市|