如何取消数组以提供一系列参数?

时间:2014-04-22 12:35:34

标签: 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'] ) );

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

  SELECT Format(template, convertToArgs( values ) );

2 个答案:

答案 0 :(得分:2)

此功能称为VARIADIC参数。

如果您添加VARIADIC关键字,则可以使用数组调用VARIADIC参数:

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

编辑:正如@ErwinBrandstetter指出的那样,这在9.2中不起作用。不是因为VARIADIC参数调用,而且format()不受支持。根据文档concatconcat_wsformat不能以这种方式调用(在9.3之前 - 除了事实之外,pg_get_functiondef在9.2中也报告它是变量的)。用户定义的函数可以在9.2中以这种方式调用。

答案 1 :(得分:0)

select format('%s!', array_to_string(array['Hello', 'world'], ' '));
    format    
--------------
 Hello world!