W Postgresie 9.3+ użyj LATERAL dołącz:
SELECT s.token, flag
FROM tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE flag = 2;
Jest to niejawny LATERAL Przystąp. Jeśli unnest() nie zwraca żadnych wierszy (puste lub NULL subject ), wynikiem będzie w ogóle brak wiersza. Użyj LEFT JOIN unnest(...) i ON true aby zawsze zwracać wiersze z tbl . Zobacz:
- Jaka jest różnica między ŁĄCZENIEM BOCZNYM a podzapytanie w PostgreSQL?
Możesz także użyć regexp_split_to_table() , ale zwykle jest to wolniejsze, ponieważ dopasowanie wyrażeń regularnych kosztuje nieco więcej. Powiązane:
- Wybierz wiersze SQL zawierające podciąg w polu tekstowym
- PostgreSQL unnest() z numerem elementu