SqlServer-STUFF拼接字符串(转义字符)

1、创建两张带有数据的表

CREATE TABLE Persons
(
    Guid uniqueidentifier not null,
    Name varchar(255) not null,
)

insert into Persons(Guid,Name)values(NEWID(),'小绿')
insert into Persons(Guid,Name)values(NEWID(),'小红')
insert into Persons(Guid,Name)values(NEWID(),'小蓝')
insert into Persons(Guid,Name)values(NEWID(),'小黄')
insert into Persons(Guid,Name)values(NEWID(),'小黑')
insert into Persons(Guid,Name)values(NEWID(),'小白')

select * from Persons

拼接前面4笔数据的名称

通常使用FOR XML PATH对返回JSON字符串的拼接

SELECT TOP 4 ',' + Name FROM  Persons FOR XML PATH ('') 

利用STUFF将上述利用FOR XML PATH生成的字符串中的前置逗号去掉

特殊拼接字符—实现返回结果:小绿->小红->小红->小黄

按照刚刚上面的写法得不到相应结果,如下图所示

这个时候我们可以使用替换(PS:长度是拼接字符串的长度),如下:

或者可以不使用替换,用以下的写法

还有一种情况就是数据库里面存在转义字符

insert into Persons(Guid,Name)values(NEWID(),'<span>2</span>')
insert into Persons(Guid,Name)values(NEWID(),'2</br>')

SELECT  NAME FROM Persons

拼接字符串看看得到什么,这个时候就发现数据库的字符都被转义了

这个时候可以使用这种写法得到结果

SELECT Name = STUFF((
SELECT ','+NAME FROM Persons FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)')
 ,1,1,'')

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值