繁体   English   中英

您可以在 PostgreSql SELECT 语句中多次连接字符串值吗?

[英]Can you concatenate a string value multiple times in a PostgreSql SELECT statement?

在 Sql Server 中,您可以运行以下查询以将多行中的值组合成单个字符串变量。

DECLARE @x NVARCHAR(MAX) = N'';

SELECT TOP 5 @x = @x + name + ', '
FROM sys.objects

SELECT @x

这导致

"sysrscols, sysrowsets, sysclones, sysallocunits, sysfiles1,"

有没有办法在 PostgreSql 中做类似的事情? 我尝试创建一个 PostgreSql 函数,它执行 SELECT INTO stringVariable 但这只会产生一行的值。

不完全是。 您在 SQL Server 中拥有的代码实际上并不能保证有效。 在 Postgres 中,您将使用:

select string_agg(name, ', ')
from sys.objects;

如果您有一个sys.objects表。

请注意,在 SQL Server 中,您应该做同样的事情:

select string_agg(name, ', ')
from sys.objects;

如本 SQL Fiddle 所示

请注意:您对变量的使用与文档直接矛盾:

如果 SELECT 语句返回多行并且变量引用了非标量表达式,则该变量将设置为结果集最后一行中表达式的返回值。

也就是说,我知道你在做什么在实践中确实有效。 但我建议使用string_agg()或在早期版本中使用 XML 进行字符串连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM