Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Lajur menjadi Berbilang Baris dalam PostgreSQL?
Memisahkan Lajur kepada Berbilang Baris dalam Postgres
Andaikan anda mempunyai jadual dengan lajur yang mengandungi berbilang nilai, seperti:
subject | flag --------+----- this is a test | 2
Anda mungkin perlu menukar jadual ini kepada struktur baharu di mana setiap nilai daripada lajur asal menjadi baris yang berasingan, seperti ini:
token | flag --------+----- this | 2 is | 2 a | 2 test | 2
Penyelesaian dengan Sertaan LATERAL (Postgres 14 )
Postgres 14 dan kemudiannya menyediakan cara yang cekap untuk mencapai ini menggunakan gabungan LATERAL dengan string_to_table( ) fungsi. Fungsi ini membahagikan lajur subjek kepada tatasusunan token:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
Penyelesaian dengan string_to_array() (Postgres 13-)
Untuk Postgres 13 atau lebih awal, gunakan fungsi string_to_array() bukannya string_to_table():
SELECT unnest(string_to_array(subject, ' ')) AS token, flag FROM tbl WHERE flag = 2;
Penyelesaian Alternatif dengan Regexp
Pilihan lain ialah menggunakan fungsi regexp_split_to_table(), walaupun ia kurang cekap berbanding string_to_table() pendekatan:
SELECT s.token, t.flag FROM tbl t CROSS JOIN regexp_split_to_table(subject, ' ') AS s(token) WHERE t.flag = 2;
Tambahan Nota
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur menjadi Berbilang Baris dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!