这两个Stuff语句之间有什么区别吗?我不是正确的理解,因为第一个填充'**',但在第二个它连接列值。
select stuff(Name,2,3,'**')
select stuff(','+Name from tablename for xml path(' ') ),1,1,' ')
请以简单的方式告诉我。
答案 0 :(得分:2)
资料功能:
STUFF函数将字符串插入另一个字符串。它删除起始位置的第一个字符串中指定长度的字符,然后将第二个字符串插入起始位置的第一个字符串中。
示例:
select stuff('Stack overflow',1,5,'Knowledge')
--output--
Knowledge overflow
Xml路径的东西:
xml路径的东西用于连接多个记录,并根据您的特定记录在单个记录中显示
示例:
declare @t table( Id int, Name varchar(10))
insert into @t
select 1,'a' union all
select 1,'b' union all
select 2,'c' union all
select 2,'d'
select ID,
stuff(( select ','+ [Name] from @t where Id = t.Id for XML path('')),1,1,'') as concat_records
from (select distinct ID from @t )t
ID concat_records
1 a,b
2 c,d
为了更好地理解Stuff https://msdn.microsoft.com/en-us/library/ms188043.aspx
注意:对不起我的英文。希望你能理解我想解释的内容。
答案 1 :(得分:0)
select stuff('Name',2,3,'**') -- Start From 2nd Character and Replace 3 character with '**'
select stuff(SELECT DISTINCT ', ' + Name
-- Add a comma (,) before each value
from tablename FOR XML PATH('') -- Select it as XML
), 1, 1, '' )
-- This is done to remove the first character