取这样的数据(a,b,c)变成(a代表的意思,b代表的意思,c代表的意思)方法

---创建测试环境
Create Table Tags(ID int,Name Varchar(20))  
Insert Tags Select 1,       'Tag1 '  
Union All Select 2,         'Tag2 '  
Union All Select 3,         'Tag3 '  
Union All Select 4,         'Tag4 '  
Union All Select 5,         'Tag5 '  
Go  
Create Table Test(ID int,Title Varchar(20),TagID Varchar(20)) 
Insert Test Select 1,      '标题1 ',        '1,4 '  
Union All Select 2,        '标题2 ',        '1,3,4 '  
Union All Select 3,        '标题3 ',        '2,5 '  
Union All Select 4,        '标题4 ',        '3,4 '  
Union All Select 5,        '标题5 ',        '2,3,4,5 '  
Go
---创建函数
Create Function dbo.fnTest(@ID Varchar(10))
Returns Varchar(8000)
As 
Begin
   Declare @sql Varchar(8000)
   Set @sql= ' '
   Select @sql=@sql+ ', '+[Name] From Tags Where Charindex(rtrim(ID),@ID) >0
   Return Stuff(@sql,1,1, ' ')
End
Go
---调用自定义函数查询结果
Select ID,Title,dbo.fnTest(TagID) As Tags From Test
---删除测试环境
Drop Table Tags,Test
Drop Function fnTest
---结果
/*
ID          Title                Tags                    
----------- -------------------- ------------------------
1           标题1                  Tag1,Tag4
2           标题2                  Tag1,Tag3,Tag4
3           标题3                  Tag2,Tag5
4           标题4                  Tag3,Tag4
5           标题5                  Tag2,Tag3,Tag4,Tag5

(所影响的行数为 5 行)
*/ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值