Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Lajur Postgres kepada Berbilang Baris?
Pertimbangkan jadual Postgres berikut:
subject | flag ---------+------ this is a test | 2
Matlamat adalah untuk mengubah jadual ini menjadi jadual baharu dengan setiap perkataan dalam lajur "subjek" menjadi baris baharu, manakala mengekalkan nilai "bendera" yang sepadan.
Satu cara berkesan untuk mencapai ini dalam Postgres ialah dengan menggunakan gabungan LATERAL bersama-sama dengan string_to_table() (tersedia dalam Postgres 14 ). Ini membolehkan kami membahagikan lajur "subjek" kepada token individu dan menyertainya dengan jadual asal.
Pertanyaan berikut mencapai transformasi ini:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
Dalam pertanyaan ini, kami menggunakan LATERAL bergabung untuk menjana satu set baris bagi setiap token dalam lajur "subjek", dan kami menapis keputusan berdasarkan "bendera" yang ditentukan nilai.
Pendekatan Alternatif
Untuk Postgres 13 dan lebih awal, unnest(string_to_array(subject, ' ')) boleh digunakan dan bukannya string_to_table(subject, ' ') .
Pendekatan lain ialah menggunakan fungsi regexp_split_to_table(), yang membolehkan tokenisasi yang lebih fleksibel berdasarkan ungkapan biasa. Walau bagaimanapun, pendekatan ini biasanya lebih perlahan daripada menggunakan string_to_table().
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur Postgres kepada Berbilang Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!