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
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
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;
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;
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;
Zusätzlich Hinweise
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!