Heim >Datenbank >MySQL-Tutorial >Wie teile ich eine Textspalte in PostgreSQL in mehrere Zeilen auf?
In Postgres kann es erforderlich sein, eine Tabelle mit einer einzelnen Spalte vom Typ Text in eine Tabelle mit mehreren Zeilen umzuwandeln Jede Zeile stellt ein Token aus der Textspalte dar.
Berücksichtigen die folgende Quelltabelle:
</p> <table> <thead><tr> <th>subject</th> <th>flag</th> </tr></thead> <tbody><tr> <td>this is a test</td> <td>2</td> </tr></tbody> </table> <p>
Die gewünschte Ausgabe ist eine Tabelle mit zwei Spalten:
</p> <table> <thead><tr> <th>token</th> <th>flag</th> </tr></thead> <tbody> <tr> <td>this</td> <td>2</td> </tr> <tr> <td>is</td> <td>2</td> </tr> <tr> <td>a</td> <td>2</td> </tr> <tr> <td>test</td> <td>2</td> </tr> </tbody> </table> <p>
Für Postgres 14 und höher das LATERAL join kann mit der Funktion string_to_table() verwendet werden, um diese Transformation zu erreichen. Die minimale Form der Abfrage ist:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') token WHERE flag = 2;
Für Postgres 13 und früher sollte unnest(string_to_array(subject, ' ')) anstelle von string_to_table(subject, ' ') verwendet werden.
Die Funktion string_to_table() teilt die Betreffspalte in separate Token auf, eines für jede Zeile, mit demselben Wert für die Flag-Spalte. Die WHERE-Klausel filtert die Ergebnisse, um nur Token anzuzeigen, die mit dem Wert 2 gekennzeichnet sind.
Diese Lösung bietet eine präzise und effiziente Möglichkeit, eine Textspalte in Postgres in einzelne Zeilen aufzuteilen.
Das obige ist der detaillierte Inhalt vonWie teile ich eine Textspalte in PostgreSQL in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!