Postgres - 将一个元素作为数组重复 N 次
Postgres - Repeating an element N times as array
例如,元素是 'hi'
,N 是 3
,我需要一个可以在 SELECT
查询 returns 以下数组:
['hi', 'hi', 'hi']
with cte as (
select 'hi' as rep_word, generate_series(1, 3) as value
) -- ^^^ n = 3
select array(SELECT rep_word::text from cte);
您可以将 array_agg
与 generate_series
一起使用
select array_agg(s) from ( values('hi')) as t(s) cross join generate_series(1,3)
通用
select array_agg(s) from ( values(:elem)) as t(s) cross join generate_series(1,:n)
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
例如,元素是 'hi'
,N 是 3
,我需要一个可以在 SELECT
查询 returns 以下数组:
['hi', 'hi', 'hi']
with cte as (
select 'hi' as rep_word, generate_series(1, 3) as value
) -- ^^^ n = 3
select array(SELECT rep_word::text from cte);
您可以将 array_agg
与 generate_series
select array_agg(s) from ( values('hi')) as t(s) cross join generate_series(1,3)
通用
select array_agg(s) from ( values(:elem)) as t(s) cross join generate_series(1,:n)
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