sql >> Database >  >> RDS >> PostgreSQL

Kolom splitsen in meerdere rijen in Postgres

Gebruik in Postgres 9.3+ een LATERAL doe mee:

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

Het is een impliciete LATERAL meedoen. Als unnest() retourneert geen rijen (leeg of NULL subject ), is het resultaat helemaal geen rij. Gebruik LEFT JOIN unnest(...) i ON true om altijd rijen terug te sturen van tbl . Zie:

  • Wat is het verschil tussen LATERAL JOIN en een subquery in PostgreSQL?

Je zou ook regexp_split_to_table() . kunnen gebruiken , maar dat is meestal langzamer omdat het matchen van reguliere expressies iets meer kost. Gerelateerd:

  • SQL selecteer rijen met subtekenreeks in tekstveld
  • PostgreSQL unnest() met elementnummer


  1. Hoe de backslash behouden bij het ontsnappen aan aanhalingstekens in MySQL - QUOTE()

  2. Recursieve subquery's met sorteren

  3. Android:hoe een contact van de telefoon importeren?

  4. Selecteer gegevens via een functie met tabelwaarde in SQL Server