Spalten in mehrere Zeilen in Postgres aufteilen
Bei einer Tabelle mit einer Spalte mit Text und einer anderen Spalte mit Ganzzahl-Flags kann es sein, dass eine Sie müssen die Tabelle in ein neues Format umwandeln, in dem jedes Wort in der Textspalte zu einer separaten Zeile in der neuen Tabelle wird, während die entsprechenden Flag-Werte beibehalten werden. In diesem Artikel wird erläutert, wie Sie dies mit Postgres erreichen.
Eine effektive Methode ist die Verwendung eines LATERAL-Joins in Kombination mit der Funktion string_to_table() in Postgres 14 oder höher. Das Schlüsselwort LATERAL wird auf den Join angewendet, um eine Set-Returning-Funktion (SRF) zu erstellen, die für jede Zeile in der übergeordneten Tabelle mehrere Zeilen zurückgibt. Die Funktion string_to_table() teilt die Textspalte in einzelne Wörter auf und erstellt für jedes Wort eine neue Zeile.
Betrachten Sie beispielsweise die folgende Abfrage:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
Diese Abfrage führt einen LATERAL-Join durch zwischen der TBL-Tabelle und dem SRF string_to_table(subject, ' '), das die Betreffspalte tokenisiert, indem es sie in Leerzeichen aufteilt. Die WHERE-Klausel filtert die Ergebnisse, um Zeilen einzuschließen, in denen die Flag-Spalte gleich 2 ist. Als Ergebnis enthält die Ausgabetabelle eine Zeile für jedes Wort in der Betreffspalte mit den entsprechenden Flag-Werten.
In Postgres 13 oder älter, unnest(string_to_array(subject, ' ')) kann anstelle von string_to_table(subject, ' ') verwendet werden.
Das obige ist der detaillierte Inhalt vonWie teile ich eine Textspalte in Postgres in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!