Должно начинаться значение массива Postgres - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу создать массив и вставить в него два идентификатора, но я получил ошибку:

значение массива должно начинаться с «{» или информации о размерах

ids_list character varying[] := ' || (SELECT COALESCE(quote_literal((array_agg(DISTINCT house_guid)) || ''',''' || quote_literal(array_agg(DISTINCT guid))), 'NULL') FROM tb) || ';

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы, кажется, используете это внутри функции PL / pgSQL.Вместо этого вы должны использовать SELECT ... INTO variable FROM...:

declare
  ids_list character varying[];
begin
  ..... 
  select array_agg(id)
    into ids_list
  from (
    select house_guid
    from tab
    union 
    select guid
    from tab
  ) t;

  .... work with the ids_list variable
end;

UNION автоматически удалит все дубликаты (как вы пытались сделать с DISTINCT.

0 голосов
/ 19 сентября 2018

использование array_agg функция

with t1 as 
(
select * from 
(
select 'test_SQL_01' as ID
union
select 'test_SQL_02_PQR_01'
union
select 'test_SQL_03_055'
union
select 'test_SQL_04_ABC_99'
) as t
) select array_agg(ID) from t1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...