sql >> Database teknologi >  >> RDS >> PostgreSQL

Opdel kolonne i flere rækker i Postgres

Brug en LATERAL i Postgres 9.3+ deltage:

SELECT s.token, flag
FROM   tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE  flag = 2;

Det er en implicit LATERAL tilslutte. Hvis unnest() returnerer ingen rækker (tom eller NULL subject ), vil resultatet ikke være nogen række overhovedet. Brug LEFT JOIN unnest(...) i ON true for altid at returnere rækker fra tbl . Se:

  • Hvad er forskellen mellem LATERAL JOIN og en underforespørgsel i PostgreSQL?

Du kan også bruge regexp_split_to_table() , men det er typisk langsommere, fordi matchning af regulære udtryk koster lidt mere. Relateret:

  • SQL-vælg rækker, der indeholder understreng i tekstfeltet
  • PostgreSQL unnest() med elementnummer


  1. Deltager du i PASS Summit i Charlotte?

  2. SQL CASE-sætning:Hvad er det, og hvad er de bedste måder at bruge det på?

  3. Hvad er forskellen mellem en midlertidig tabel og tabelvariabel i SQL Server?

  4. Hvordan tilføjer man en auto-incrementing primær nøgle til en eksisterende tabel i PostgreSQL?