XMLAGG等效于sql server

时间:2017-08-08 20:13:32

标签: sql sql-server oracle

select XMLAGG (XMLELEMENT (E, Customer_data, ',').EXTRACT ('//text()') ORDER BY Customer_data).GETCLOBVAL (), customer_id from customer_table

这基本上组合了customer_table中具有相同customer_id的所有行。这适用于Oracle,并且对它可以处理的行大小没有任何限制(大于4000)。

我需要在MS SQL Server中使用类似的功能,它会为我做同样的事情。我尝试过使用'STUFF'功能,但它有4000个字符的限制。 请帮忙。

1 个答案:

答案 0 :(得分:1)

STUFF没有4000个字符的限制。 EG

with q as
(
  select o.name
  from sys.objects o, sys.columns c
)
select 
datalength(
STUFF((Select ','+ q.Name
from q
FOR XML PATH('')),1,1,'') 
)
q

输出

q
--------------------
2624410

(1 row(s) affected)