Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Lajur menjadi Berbilang Baris dalam PostgreSQL?

Bagaimana untuk Memisahkan Lajur menjadi Berbilang Baris dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-06 21:54:44
asal
798 orang telah melayarinya

How to Split a Column into Multiple Rows in 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
Salin selepas log masuk

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

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

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

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

Tambahan Nota

  • Klausa WHERE digunakan untuk menapis keputusan berdasarkan nilai bendera.
  • Koma dalam senarai FROM mewakili CROSS JOIN, yang diandaikan secara automatik untuk fungsi set-returning dalam senarai FROM.
  • Jika lajur subjek boleh kosong atau batal, gunakan LEFT JOIN dengan ON TRUE untuk mengekalkan baris yang layak daripada jadual asal.

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!

sumber:php.cn
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