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

Dividi la colonna in più righe in Postgres

In Postgres 9.3+ usa un LATERAL unisciti:

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

È un implicito LATERAL giuntura. Se unnest() non restituisce alcuna riga (vuota o NULL subject ), il risultato non sarà affatto una riga. Usa LEFT JOIN unnest(...) i ON true per restituire sempre le righe da tbl . Vedi:

  • Qual ​​è la differenza tra LATERAL JOIN e una sottoquery in PostgreSQL?

Puoi anche usare regexp_split_to_table() , ma in genere è più lento perché la corrispondenza delle espressioni regolari costa un po' di più. Correlati:

  • SQL seleziona righe contenenti sottostringa nel campo di testo
  • PostgreSQL unnest() con numero elemento