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 ) );
答案 0 :(得分:2)
此功能称为VARIADIC
参数。
如果您添加VARIADIC
关键字,则可以使用数组调用VARIADIC
参数:
SELECT format('%s %s!', VARIADIC ARRAY['Hello', 'world']);
编辑:正如@ErwinBrandstetter指出的那样,这在9.2中不起作用。不是因为VARIADIC
参数调用,而且format()
不受支持。根据文档concat
,concat_ws
和format
不能以这种方式调用(在9.3之前 - 除了事实之外,pg_get_functiondef
在9.2中也报告它是变量的)。用户定义的函数可以在9.2中以这种方式调用。
答案 1 :(得分:0)
select format('%s!', array_to_string(array['Hello', 'world'], ' '));
format
--------------
Hello world!