sql >> Databáze >  >> RDS >> PostgreSQL

Rozdělit sloupec do více řádků v Postgresu

V Postgresu 9.3+ použijte LATERAL připojit se:

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

Je to implicitní LATERAL připojit. Pokud unnest() nevrací žádné řádky (prázdné nebo NULL subject ), výsledkem nebude vůbec žádný řádek. Použijte LEFT JOIN unnest(...) i ON true vždy vrátit řádky z tbl . Viz:

  • Jaký je rozdíl mezi LATERAL JOIN a dílčím dotazem v PostgreSQL?

Můžete také použít regexp_split_to_table() , ale to je obvykle pomalejší, protože párování regulárních výrazů stojí o něco více. Související:

  • SQL vybere řádky obsahující podřetězec v textovém poli
  • PostgreSQL unnest() s číslem prvku


  1. Příklady SYSDATE() – MySQL

  2. Sloučit dva oddíly do jednoho v SQL Server (T-SQL)

  3. Existuje způsob, jak nastavit čas vypršení platnosti, po kterém se záznam dat v PostgreSQL automaticky smaže?

  4. Rychlý a snadný způsob migrace SQLite3 na MySQL?