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