STRING_AGG 带换行符

STRING_AGG with line break

DROP TABLE IF EXISTS items;
CREATE TABLE items (item varchar(20));
INSERT INTO items VALUES ('apple'),('raspberry');
SELECT STRING_AGG(item, CHAR(13)) AS item_list FROM items;

如何在项目之间换行?

把它放在字符串中:

SELECT STRING_AGG(item, '
') AS item_list
FROM items;

需要注意的是 "end of line" 的定义取决于操作系统。因此,这将在 Unix 上插入一个与 Windows.

不同的值

Here 是一个 db<>fiddle.

如果使用 Management Studio 查询编辑器,结果到网格选项无法实现回车 return。切换到 Results to Text 以正确查看结果集。

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15

SELECT STRING_AGG(item, CHAR(13)) AS item_list FROM items;

您的查询在我的环境中运行良好。您需要在管理工作室中启用此设置:

Tools > Options > Query Results > Results to Grid

我不明白为什么,但他们已经在几个 SSMS 版本之前更改了默认行为。

您可以使用 print 函数将所有输出打印为 text

DECLARE @Res  NVARCHAR(MAX)  = (SELECT STRING_AGG(item, '
') FROM items);
print(@Res)