1

Is there any alternative to the PostgreSQL array_agg() function so that it doesn't return values in the format: '{x,y,z,}'.
Can I have it return just: 'x,y,z' ?

3 Answers 3

10

In PostgreSQL 9.0 or later use string_agg(val, ',').
It returns a string with delimiters of your choosing.

array_agg(val) returns an array, no surprise there. The curly braces you see are integral part of array literals - the text representation of arrays.

In older versions (or any version really) you can substitute with array_to_string(array_agg(val), ',').

Or, quick'n'dirty: trim(array_agg(val)::text, '{}' - if values never start or end with curly braces.

Sign up to request clarification or add additional context in comments.

Comments

4

If you are not on 9.0 yet (which has the already mentioned string_agg() function) you can use array_to_string() on the result of array_agg()

Comments

2

Use the STRING_AGG function:

SELECT
  STRING_AGG(name, ',')
FROM
  person;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.