Di Postgres 9.3+ gunakan LATERAL bergabung:
SELECT s.token, flag
FROM tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE flag = 2;
Ini adalah LATERAL implicit implisit Ikuti. Jika unnest() tidak mengembalikan baris apa pun (kosong atau NULL subject ), hasilnya tidak akan ada baris sama sekali. Gunakan LEFT JOIN unnest(...) i ON true untuk selalu mengembalikan baris dari tbl . Lihat:
- Apa perbedaan antara LATERAL JOIN dan subquery di PostgreSQL?
Anda juga dapat menggunakan regexp_split_to_table() , tapi itu biasanya lebih lambat karena pencocokan ekspresi reguler sedikit lebih mahal. Terkait:
- SQL pilih baris yang berisi substring di bidang teks
- PostgreSQL unnest() dengan nomor elemen