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

Bagaimana untuk Memisahkan Lajur Teks kepada Berbilang Baris dalam Postgres?

DDD
DDDasal
2025-01-07 00:41:41372semak imbas

How to Split a Column of Text into Multiple Rows in Postgres?

Memisahkan Lajur kepada Berbilang Baris dalam Postgres

Memandangkan jadual dengan lajur yang mengandungi teks dan lajur lain yang mengandungi bendera integer, mungkin terdapat perlu mengubah jadual menjadi format baharu di mana setiap perkataan dalam lajur teks menjadi baris berasingan dalam jadual baharu, sambil mengekalkan bendera yang sepadan nilai. Artikel ini meneroka cara untuk mencapai perkara ini menggunakan Postgres.

Satu kaedah yang berkesan ialah menggunakan gabungan LATERAL dalam kombinasi dengan fungsi string_to_table() dalam Postgres 14 atau lebih baru. Kata kunci LATERAL digunakan pada gabungan untuk mencipta fungsi pengembalian set (SRF) yang mengembalikan berbilang baris untuk setiap baris dalam jadual induk. Fungsi string_to_table() membahagikan lajur teks kepada perkataan individu, mencipta baris baharu untuk setiap perkataan.

Sebagai contoh, pertimbangkan pertanyaan berikut:

SELECT token, flag
FROM tbl, string_to_table(subject, ' ') AS token
WHERE flag = 2;

Pertanyaan ini melakukan gabungan LATERAL antara jadual tbl dan SRF string_to_table(subject, ' '), yang menandakan lajur subjek dengan membelahnya pada ruang putih. Klausa WHERE menapis hasil untuk memasukkan baris dengan lajur bendera sama dengan 2. Akibatnya, jadual output akan mempunyai satu baris untuk setiap perkataan dalam lajur subjek, dengan nilai bendera yang sepadan.

Dalam Selepas 13 tahun ke atas, unnest(string_to_array(subject, ' ')) boleh digunakan dan bukannya string_to_table(subject, ' ').

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur Teks kepada Berbilang Baris dalam Postgres?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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