Postgres-将元素重复N次作为数组

时间:2019-05-24 03:57:12

标签: postgresql postgres-9.6

例如,在元素为'hi' N 3的地方,我需要一个可以在SELECT查询中使用的PostgreSQL代码段返回以下数组:

['hi', 'hi', 'hi']

3 个答案:

答案 0 :(得分:2)

Postgres为此提供了array_fill,例如:

SELECT array_fill('hi'::text, '{3}');
SELECT array_fill('hi'::text, array[3]);

这两个示例是等效的,但是如果要用变量替换维度3,则第二种形式更方便。

另请参阅:https://www.postgresql.org/docs/current/functions-array.html

答案 1 :(得分:0)

sql demo

with cte as (
  select 'hi' as rep_word, generate_series(1, 3) as value
)                                         -- ^^^ n = 3
select array(SELECT rep_word::text from cte);

答案 2 :(得分:0)

您可以将array_agggenerate_series一起使用

select array_agg(s) from ( values('hi')) as t(s) cross join generate_series(1,3)

Generic

select array_agg(s) from ( values(:elem)) as t(s) cross join generate_series(1,:n)

DEMO