„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie teilen Sie eine Postgres -Spalte in mehrere Zeilen auf?

Wie teilen Sie eine Postgres -Spalte in mehrere Zeilen auf?

Gepostet am 2025-02-26
Durchsuche:875

How to Split a Postgres Column into Multiple Rows?

Spalten Sie die Spalte in mehrere Reihen in postgres

Problemanweisung

Betrachten Sie die folgende Postgres -Tabelle:

subject |  flag
--------- ------
this is a test | 2

Das Ziel ist es, diese Tabelle in eine neue Tabelle zu verwandeln, wobei jedes Wort in der Spalte "Betreff" eine neue Zeile ist, während die entsprechende "Flag" -Warhe erhalten wird. ]

Ein effektiver Weg, dies in Postgres zu erreichen, besteht darin, einen lateralen Join in Verbindung mit String_to_table () (in Postgres 14 verfügbar) zu verwenden. Dies ermöglicht es uns, die Spalte "Subjekt" in einzelne Token aufzuteilen und mit der Original -Tabelle mitzumachen.

Die folgende Abfrage erfüllt diese Transformation:

Wählen Sie Token, Flag, Flag Von TBL, String_to_table (Betreff, '') als Token Wobei Flag = 2;

In dieser Abfrage verwenden wir den lateralen Join, um eine Reihe von Zeilen für jedes Token in der Spalte "Subjekt" zu generieren, und filtern die Ergebnisse basierend auf dem angegebenen "Flag" -Wert.
SELECT token, flag
FROM tbl, string_to_table(subject, ' ') AS token
WHERE flag = 2;

alternative Ansätze

für Postgreen 13 und früher, unnest (string_to_array (Betreff, ' ')) kann anstelle von string_to_table verwendet werden (Betreff,' ').

Ein anderer Ansatz ist die Verwendung der Funktion regexp_split_to_table (), die flexiblere Tokenisierung basierend auf regelmäßigen Ausdrücken ermöglicht. Dieser Ansatz ist jedoch im Allgemeinen langsamer als die Verwendung von String_to_table ().

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3