Heim > Datenbank > MySQL-Tutorial > Wie entschachtelt man durch Kommas getrennte Zeichenfolgen in PostgreSQL effizient?

Wie entschachtelt man durch Kommas getrennte Zeichenfolgen in PostgreSQL effizient?

Mary-Kate Olsen
Freigeben: 2025-01-23 04:28:10
Original
737 Leute haben es durchsucht

How to Efficiently Unnest Comma-Separated Strings in PostgreSQL?

PostgreSQL 14 und höher

Für durch Kommas getrennte Zeichenfolgen verwenden Sie die Funktion string_to_table() anstelle von unnest(string_to_array()):

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;
Nach dem Login kopieren

PostgreSQL 9.4 und höher

Fügen Sie WITH ORDINALITY für Funktionen hinzu, die Sammlungen zurückgeben:

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;
Nach dem Login kopieren

PostgreSQL 8.4 – 9.3-Versionen

Verwenden Sie row_number() OVER (PARTITION BY id) (ohne ORDER BY), um die Seriennummer zu erhalten:

SELECT *, row_number() OVER (PARTITION by id) AS nr
FROM (SELECT id, regexp_split_to_table(elements, ',') AS elem FROM tbl) t;
Nach dem Login kopieren

PostgreSQL 8.1 – 8.4-Versionen

Benutzerdefinierte Funktion f_unnest_ord() zum Aufteilen von Elementen mit Seriennummern implementieren:

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';
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entschachtelt man durch Kommas getrennte Zeichenfolgen in PostgreSQL effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage