PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Podziel kolumnę na wiele wierszy w Postgres

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks PostgreSQL nie jest używany do zapytań o zakresy IP

  2. Jak zmodyfikować pola w nowym typie danych PostgreSQL JSON?

  3. Alias ​​odniesienia w klauzuli WHERE

  4. Uzyskaj identyfikator z warunkowego INSERT

  5. Wstawianie tablicy za pomocą gem Sequel w PostgreSQL