Arrays 如何取消数组的嵌套以提供一系列参数?

Arrays 如何取消数组的嵌套以提供一系列参数?,arrays,postgresql,Arrays,Postgresql,PostgreSQL 9.2与 SELECT Format('%s %s!', 'Hello', 'world'); 但我需要像这样的东西 SELECT Format('%s %s!', array['Hello', 'world'] ); 或者,更具体地说,我需要一些convertToArgs SELECT Format('%s %s!', convertToArgs( array['Hello', 'world'] ) ); 注意:真正的问题是通用的,有任意数量的ITEN(在数

PostgreSQL 9.2与

 SELECT Format('%s %s!', 'Hello', 'world');
但我需要像这样的东西

 SELECT Format('%s %s!', array['Hello', 'world'] );
或者,更具体地说,我需要一些
convertToArgs

 SELECT Format('%s %s!', convertToArgs( array['Hello', 'world'] ) );

注意:真正的问题是通用的,有任意数量的ITEN(在数组和兼容的占位符中)

此功能称为参数

如果在
VARIADIC
关键字前加前缀,也可以使用数组调用
VARIADIC
参数:

SELECT format('%s %s!', VARIADIC ARRAY['Hello', 'world']);

编辑:如前所述,这在9.2中不起作用。不是因为
VARIADIC
参数调用,也不是因为不支持
format()
。根据docs
concat
concat\u ws
format
不能以这种方式调用(在9.3之前-除此之外,
pg\u get\u functiondef
也在9.2中报告了它的变量)。在9.2中也可以用这种方式调用用户定义的函数。

对不起。。。本例中的解决方法很好,但不是问题的解决方案。我的数据库使用
格式(t,a)
,两个变量,
a
和变量
数组长度(a,1)
,以及
t
和兼容的占位符。@Peter你能用PL/pgSQL吗?OPS吗?我投票了,但运行此选择时出错:“很少参数”错误。在这里与Postgres 9.3一起使用<代码>可变调用在8.4中的文档中<代码>格式()。你确定你进行了这个精确的查询吗?嗯。。。我的postgreSQL不是9.3,是9.2.3。。。嗯,我必须等一下。非常感谢<代码>错误:format SQL state:22023的参数太少如果这是错误消息,即使正确使用了
VARIADIC
关键字,也意味着在
format()
调用的第一个参数中提供的占位符比数组中的占位符多。f、 示例:
选择格式('%s%s!',可变数组['Hello'])
@PeterKrauss:
concat、concat和format函数是可变的…
。对于9.2或更早版本,情况并非如此。没有Postgres版本“9.X”。引用:
一个主要版本的编号是通过增加版本号的第一部分或第二部分来进行的,例如9.1到9.2。
这种不准确的结果是:pozs给出了一个答案(暗示
变量
),该答案适用于9.3,但不适用于9.2或更早版本…好的,对不起,我明白了。。。编辑问题
select format('%s!', array_to_string(array['Hello', 'world'], ' '));
    format    
--------------
 Hello world!
SELECT format('%s %s!', VARIADIC ARRAY['Hello', 'world']);