Heim >Datenbank >MySQL-Tutorial >Wie teile ich eine Postgres-Spalte in mehrere Zeilen auf?
Betrachten Sie die folgende Postgres-Tabelle:
subject | flag ---------+------ this is a test | 2
Das Ziel besteht darin, diese Tabelle in eine neue Tabelle umzuwandeln, wobei jedes Wort in der Spalte „Betreff“ eine neue Zeile ist, während das entsprechende Wort erhalten bleibt „Flag“-Wert.
Eine effektive Möglichkeit, dies in Postgres zu erreichen, ist die Verwendung eines LATERAL-Joins in Verbindung mit string_to_table() (verfügbar in Postgres 14). Dadurch können wir die Spalte „Betreff“ in einzelne Token aufteilen und diese mit der Originaltabelle verbinden.
Die folgende Abfrage führt diese Transformation durch:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
In dieser Abfrage verwenden wir die LATERAL-Join, um eine Reihe von Zeilen für jedes Token in der Spalte „Betreff“ zu generieren, und wir filtern die Ergebnisse basierend auf der angegebenen „Flagge“. value.
Alternative Ansätze
Für Postgres 13 und früher kann unnest(string_to_array(subject, ' ')) anstelle von string_to_table(subject, ' ') verwendet werden. .
Ein anderer Ansatz besteht darin, die Funktion regexp_split_to_table() zu verwenden, die Folgendes ermöglicht flexiblere Tokenisierung basierend auf regulären Ausdrücken. Dieser Ansatz ist jedoch im Allgemeinen langsamer als die Verwendung von string_to_table().
Das obige ist der detaillierte Inhalt vonWie teile ich eine Postgres-Spalte in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!