Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menghapuskan Rentetan Dipisahkan Koma dengan Cekap dalam PostgreSQL?

Bagaimana untuk Menghapuskan Rentetan Dipisahkan Koma dengan Cekap dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-23 04:28:10
asal
711 orang telah melayarinya

How to Efficiently Unnest Comma-Separated Strings in PostgreSQL?

PostgreSQL 14 dan ke atas

Untuk rentetan dipisahkan koma, gunakan fungsi string_to_table() dan bukannya unnest(string_to_array()):

<code class="language-sql">SELECT t.id, a.elem, a.nr
FROM tbl t
LEFT JOIN LATERAL string_to_table(t.elements, ',') WITH ORDINALITY AS a(elem, nr) ON true;</code>
Salin selepas log masuk

PostgreSQL 9.4 dan ke atas

Tambah WITH ORDINALITY untuk fungsi yang mengembalikan koleksi:

<code class="language-sql">SELECT t.id, a.elem, a.nr
FROM tbl AS t
LEFT JOIN LATERAL unnest(string_to_array(t.elements, ',')) WITH ORDINALITY AS a(elem, nr) ON true;</code>
Salin selepas log masuk

PostgreSQL 8.4 - 9.3 versi

Gunakan row_number() OVER (PARTITION BY id) (tanpa ORDER BY) untuk mendapatkan nombor siri:

<code class="language-sql">SELECT *, row_number() OVER (PARTITION by id) AS nr
FROM (SELECT id, regexp_split_to_table(elements, ',') AS elem FROM tbl) t;</code>
Salin selepas log masuk

PostgreSQL 8.1 - 8.4 versi

Laksanakan fungsi tersuai f_unnest_ord() untuk memisahkan elemen dengan nombor siri:

<code class="language-sql">CREATE FUNCTION f_unnest_ord(anyarray, OUT val anyelement, OUT ordinality integer)
RETURNS SETOF record
LANGUAGE sql IMMUTABLE AS
'SELECT [i], i - array_lower(,1) + 1
FROM generate_series(array_lower(,1), array_upper(,1)) i';</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghapuskan Rentetan Dipisahkan Koma dengan Cekap 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