String_Agg的TSQL奇怪

时间:2018-06-08 04:54:22

标签: sql-server

此查询返回第二个字符串Agg函数的错误结果:

select
string_agg(t.name, ';') as BBB,
string_agg(t.name, ', ' ) as CCC
from sys.tables as t 

但是如果你改变t.name就行了,例如:

select
string_agg(t.name, ';') as BBB,
string_agg('' + t.name, ', ' ) as CCC
from sys.tables as t 

知道为什么吗?这是一个错误吗?

1 个答案:

答案 0 :(得分:3)

有趣的是,这是一个错误,当然。 它检查第一个参数并将其用作第二个参数的缓存。

它在sys。*对象上运行奇数

但查询在其他数据库表上成功运行。

我用执行计划执行了确切的查询。

enter image description here

更有趣的是,当我在另一个表上的用户数据库上执行查询时,查询会返回预期的数据。

在这种情况下没有错误

enter image description here