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