Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Lajur Postgres kepada Berbilang Baris?

Bagaimana untuk Memisahkan Lajur Postgres kepada Berbilang Baris?

Patricia Arquette
Lepaskan: 2025-01-06 21:43:48
asal
788 orang telah melayarinya

How to Split a Postgres Column into Multiple Rows?

Pisah Lajur kepada Berbilang Baris dalam Postgres

Pernyataan Masalah

Pertimbangkan jadual Postgres berikut:

subject |  flag
---------+------
this is a test | 2
Salin selepas log masuk

Matlamat adalah untuk mengubah jadual ini menjadi jadual baharu dengan setiap perkataan dalam lajur "subjek" menjadi baris baharu, manakala mengekalkan nilai "bendera" yang sepadan.

Penyelesaian

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;
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan