SQL分割字符串 && SQL一列多行字符串分组合并

系统 1830 0

T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,

但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。用临时表作为数组:

ALTER function [dbo].[F_Limitsplit](@IDs varchar(max),@UserID int)
returns @t table(UserID int,ID int)
as
begin

while(charindex(',',@IDs)<>0)
begin
insert @t(UserID,ID) values (@UserID,substring(@IDs,1,charindex(',',@IDs)-1))
set @IDs = stuff(@IDs,1,charindex(',',@IDs),'')
end
insert @t(UserID,ID) values (@UserID,@IDs)
return
end

 

-----------执行

 

select   *   from   dbo.F_Limitsplit('1,2,3,4,5,6,7',1)   

    
--------------------执行结果

UserID     ID

1     1
1     2
1     3
1     4
1     5
1     6
1     7

 

 

=====================================================

数据
id   data
1    a
1    b
1    c
2    aa
2    bb

结果: 
1 abc
2 aabb
就是要把data 列多行合并成一行显示

要求:一句sql语句. 不能用sp.

-----------------------------

SQL codecreate table tb(id int, data varchar(10))
insert into tb values(1 ,   'a') 
insert into tb values(1 ,   'b') 
insert into tb values(1 ,   'c') 
insert into tb values(2 ,   'aa') 
insert into tb values(2 ,   'bb') 
go

select id, [data]=replace((select ','+[data] from tb t where id=tb.id for xml path('')),',','')
from tb
group by id

drop table tb

--------------------------------------------

SELECT O.*,
ItemName=(select ProductName+',' from Bms_OrderGoodsDetail OGD
left join Bms_Products P on OGD.ProductID=P.ProductID
where OGD.OrderGoodsID= O.OrderGoodsID for xml path(''))
FROM [dbo].[Bms_OrderGoods] O

 

SQL分割字符串 && SQL一列多行字符串分组合并


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论