Re: how to concat/concat_ws all fields without braces

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: how to concat/concat_ws all fields without braces
Дата
Msg-id CAFj8pRAKcK96oXzTtR3+wWWi-FD2Tfr0bm89GsVWG9FzrNkA9g@mail.gmail.com
обсуждение исходный текст
Ответ на how to concat/concat_ws all fields without braces  (Jean Louis <bugs@gnu.support>)
Ответы Re: how to concat/concat_ws all fields without braces  (Jean Louis <bugs@gnu.support>)
Список pgsql-general
Hi

so 15. 6. 2019 v 8:20 odesílatel Jean Louis <bugs@gnu.support> napsal:
Hello,

I have tried doing something like:

SELECT concat_ws(' ', table.*) FROM table;

and if I do that way, it is essentially same as

SELECT concat(table.*) FROM table;

and I get the items in braces like (1,something).

Why do I get it in braces?

Is there a way without specifying specific fields
to get all items concatenated without braces?

I would prefer conat_ws option.

It cannot to work. Postgres try to convert composite type based on all fields to one text value, and this value is passed as one argument. It can work because concat, concat_ws has 'variadic "any" parameter. But it does cannot to work like you expect.

you can write own function that will do what you want

create or replace function rec_concat_fields(record, text)
returns text as $$
  begin
    return string_agg(value, '|') from json_each_text(row_to_json($1));
  end
$$ language plpgsql;

postgres=# select rec_concat_fields(foo.*, '*') from foo;
┌───────────────────┐
│ rec_concat_fields │
╞═══════════════════╡
│ ahoj|svete        │
└───────────────────┘
(1 row)

Regards

Pavel




Jean


В списке pgsql-general по дате отправления:

Предыдущее
От: Tiemen Ruiten
Дата:
Сообщение: Re: checkpoints taking much longer than expected
Следующее
От: Thomas Kellerer
Дата:
Сообщение: Re: how to concat/concat_ws all fields without braces