东西功能有什么不同?

时间:2017-02-08 10:22:19

标签: sql sql-server

这两个Stuff语句之间有什么区别吗?我不是正确的理解,因为第一个填充'**',但在第二个它连接列值。

  1. select stuff(Name,2,3,'**')

  2. select stuff(','+Name from tablename for xml path(' ') ),1,1,' ')

  3. 请以简单的方式告诉我。

2 个答案:

答案 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