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