PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Spalte in Postgres in mehrere Zeilen aufteilen

Verwenden Sie in Postgres 9.3+ einen LATERAL beitreten:

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

Es ist ein implizites LATERAL beitreten. Wenn unnest() gibt keine Zeilen zurück (leer oder NULL subject ), ist das Ergebnis überhaupt keine Zeile. Verwenden Sie LEFT JOIN unnest(...) i ON true um immer Zeilen aus tbl zurückzugeben . Siehe:

  • Was ist der Unterschied zwischen LATERAL JOIN und einer Unterabfrage in PostgreSQL?

Sie könnten auch regexp_split_to_table() verwenden , aber das ist normalerweise langsamer, weil der Abgleich mit regulären Ausdrücken etwas mehr kostet. Verwandte:

  • SQL-Auswahlzeilen mit Teilstring im Textfeld
  • PostgreSQL unnest() mit Elementnummer