Heim > Datenbank > MySQL-Tutorial > Wie teile ich eine Spalte in PostgreSQL in mehrere Zeilen auf?

Wie teile ich eine Spalte in PostgreSQL in mehrere Zeilen auf?

Mary-Kate Olsen
Freigeben: 2025-01-06 21:54:44
Original
772 Leute haben es durchsucht

How to Split a Column into Multiple Rows in PostgreSQL?

Spalte in mehrere Zeilen in Postgres aufteilen

Angenommen, Sie haben eine Tabelle mit einer Spalte, die mehrere Werte enthält, wie zum Beispiel:

subject | flag
--------+-----
this is a test | 2
Nach dem Login kopieren

Möglicherweise müssen Sie diese Tabelle in eine neue Struktur umwandeln, in der jeder Wert aus der ursprünglichen Spalte zu einer separaten Zeile wird, z Dies:

token   | flag
--------+-----
this    | 2
is      | 2
a       | 2
test    | 2
Nach dem Login kopieren

Lösung mit LATERAL Join (Postgres 14)

Postgres 14 und höher bieten eine effiziente Möglichkeit, dies mithilfe eines LATERAL-Joins mit string_to_table( zu erreichen ) Funktion. Diese Funktion teilt die Betreffspalte in ein Array von Token auf:

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

Lösung mit string_to_array() (Postgres 13-)

Für Postgres 13 oder früher verwenden Sie stattdessen die Funktion string_to_array() string_to_table():

SELECT unnest(string_to_array(subject, ' ')) AS token, flag
FROM tbl
WHERE flag = 2;
Nach dem Login kopieren

Alternative Lösung mit Regexp

Eine andere Option ist die Verwendung der Funktion regexp_split_to_table(), obwohl sie weniger effizient ist als string_to_table() Ansatz:

SELECT s.token, t.flag
FROM tbl t
CROSS JOIN regexp_split_to_table(subject, ' ') AS s(token)
WHERE t.flag = 2;
Nach dem Login kopieren

Zusätzlich Hinweise

  • Die WHERE-Klausel wird verwendet, um die Ergebnisse basierend auf dem Flag-Wert zu filtern.
  • Das Komma in der FROM-Liste stellt einen CROSS JOIN dar, der automatisch angenommen wird Set-Return-Funktionen in der FROM-Liste.
  • Wenn die Betreffspalte leer oder null sein kann, verwenden Sie einen LEFT JOIN mit ON TRUE, um qualifizierte Zeilen beizubehalten aus der Originaltabelle.

Das obige ist der detaillierte Inhalt vonWie teile ich eine Spalte in PostgreSQL in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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