Movatterモバイル変換


[0]ホーム

URL:


You don’t need a vector database - just use Postgres for everything. Read the case study on switching from Pinecone to Neon
PostgreSQL Tutorial
PostgreSQL Tutorial

PostgreSQL STRING_AGG Function

Summary: in this tutorial, you will learn how to use the PostgreSQLSTRING_AGG() function to concatenate strings and place a separator between them.

Introduction to PostgreSQL STRING_AGG() function

The PostgreSQLSTRING_AGG() function is an aggregate function that concatenates a list of strings and places a separator between them. It does not add the separator at the end of the string.

The following shows the syntax of theSTRING_AGG() function:

STRING_AGG (expression, separator [order_by_clause] )

TheSTRING_AGG() function accepts two arguments and an optionalORDER BY clause.

  • expression is any valid expression that can resolve to a character string. If you use other types than character string type, you need to explicitlycast these values of that type to the character string type.
  • separator is the separator for concatenated strings.

Theorder_by_clause is an optional clause that specifies the order of concatenated results. It has the following form:

ORDER BY expression1 {ASC | DESC}, [...]

TheSTRING_AGG() is similar to theARRAY_AGG() function except for the return type. The return value of theSTRING_AGG() function is a string whereas the return value of theARRAY_AGG() function is anarray.

Like other aggregate functions such asAVG(),COUNT(),MAX(),MIN(), andSUM(), theSTRING_AGG() function is often used with theGROUP BY clause.

PostgreSQL STRING_AGG() function examples

We will use thefilm,film_actor, andactor tables from thesample database for the demonstration:

1) Using PostgreSQL STRING_AGG() function to generate a list of comma-separated values

This example uses theSTRING_AGG() function to return a list of actor’s names for each film from thefilm table:

SELECT    f.title,    STRING_AGG (a.first_name|| ' ' || a.last_name,        ','       ORDER BY        a.first_name,        a.last_name    ) actorsFROM    film fINNER JOIN film_actor faUSING (film_id)INNER JOIN actor aUSING (actor_id)GROUP BY    f.title;

Here is the partial output:

title            |                                                                                                   actors-----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Academy Dinosaur            | Christian Gable,Johnny Cage,Lucille Tracy,Mary Keitel,Mena Temple,Oprah Kilmer,Penelope Guiness,Rock Dukakis,Sandra Peck,Warren Nolte Ace Goldfinger              | Bob Fawcett,Chris Depp,Minnie Zellweger,Sean Guiness Adaptation Holes            | Bob Fawcett,Cameron Streep,Julianne Dench,Nick Wahlberg,Ray Johansson...

2) Using the PostgreSQL STRING_AGG() function to generate a list of emails

The following example uses theSTRING_AGG() function to build an email list for each country, with emails separated by semicolons:

SELECT    country,    STRING_AGG (email,';') email_listFROM    customerINNER JOIN address USING (address_id)INNER JOIN city USING (city_id)INNER JOIN country USING (country_id)GROUP BY    countryORDER BY    country;

The following picture shows the partial output:

PostgreSQL STRING_AGG function email list example

Summary

  • Use the PostgreSQLSTRING_AGG() function to concatenate strings and place a separator between them.

Last updated on

Was this page helpful?
Thank you for your feedback!

[8]ページ先頭

©2009-2025 Movatter.jp