sql >> Databasteknik >  >> RDS >> PostgreSQL

Dela upp kolumnen i flera rader i Postgres

I Postgres 9.3+ använd en LATERAL gå med:

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

Det är en implicit LATERAL Ansluta sig. Om unnest() returnerar inga rader (tom eller NULL subject ), blir resultatet ingen rad alls. Använd LEFT JOIN unnest(...) i ON true att alltid returnera rader från tbl . Se:

  • Vad är skillnaden mellan LATERAL JOIN och en underfråga i PostgreSQL?

Du kan också använda regexp_split_to_table() , men det är vanligtvis långsammare eftersom matchning av reguljära uttryck kostar lite mer. Relaterat:

  • SQL-valrader som innehåller delsträng i textfältet
  • PostgreSQL unnest() med elementnummer


  1. Separera kommaseparerade värden och lagra i tabell i sql-server

  2. Hur pivoterar man okänt antal kolumner och inget aggregat i SQL Server?

  3. Skriv ett tal med två decimaler SQL Server

  4. Installera Oracle 9i Developer Suite 2.0 på Windows