Problem:
Sie möchten einen String in PostgreSQL aufteilen.
Beispiel 1:
Sie haben einen Satz und möchten ihn durch das Leerzeichen trennen.
Lösung 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Das Ergebnis sieht so aus:
Teile |
---|
Es ist |
ein |
Beispiel |
Satz. |
Diskussion:
Um alle Teile des Satzes als Elemente eines Arrays in PostgreSQL zu erhalten, verwenden Sie die Funktion string_to_array(text, delimiter). Der Text ist der Text, den Sie teilen möchten, und das Trennzeichen ist die Zeichenfolge (hier ein Leerzeichen), durch die Sie den Text teilen möchten. Eine einfache Verwendung von string_to_array(text, delimiter)
Funktion:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
gibt das folgende Ergebnis zurück:
Teile |
---|
{Es ist ein Beispielsatz.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Dies erzeugt eine Spalte mit allen String-Teilen, jeweils in einer separaten Zeile.
Beispiel 2:
In den sentences
Tabelle, da sind einige Sätze.
Satz |
---|
Das ist der erste Satz. |
Und hier ist der andere. |
Sie möchten die Sätze durch das Leerzeichen trennen.
Lösung 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Das Ergebnis sieht so aus:
Teile |
---|
Das |
ist |
der |
zuerst |
Satz. |
Und |
hier |
der |
andere |
eins. |
Diskussion:
Verwenden Sie wie im vorherigen Beispiel die Funktionen string_to_array(text, delimiter) und unsest(array). Der Text sollte der Spaltenname (Satz) sein, aber das Trennzeichen ist immer noch das Leerzeichen (' '). Dieses Mal verwenden Sie die Daten aus der Tabelle, also müssen Sie das Schlüsselwort FROM zusammen mit dem Tabellennamen verwenden.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Beispiel 3:
In den sentences
Tabelle gibt es zwei Spalten:id
und sentence
.
id | Satz |
---|---|
1 | Das ist der erste Satz. |
2 | Und hier ist der andere. |
Sie möchten die Sätze durch das Leerzeichen trennen.
Lösung 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Das Ergebnis sieht so aus:
id | Teile |
---|---|
1 | Das |
1 | ist |
1 | der |
1 | zuerst |
1 | Satz. |
2 | Und |
2 | hier |
2 | der |
2 | Andere |
2 | eins. |
Diskussion:
Dieses Beispiel ist sehr ähnlich, aber Sie möchten auch die id
sehen Säule. Um diese Spalte zu sehen, fügen Sie sie einfach zu SELECT
hinzu Liste und denken Sie daran, das Komma einzufügen. Sie sehen die ID des Satzes zusammen mit den Teilen der Sätze im Ergebnis. Beispielsweise ist der erste Satz in 5 Teile aufgeteilt und hat die ID 1
. Daher ist die ID für alle 5 Teile im Ergebnis 1
. Der nächste Satz mit der ID 2
, ist ebenfalls in 5 Teile aufgeteilt, und jeder dieser Teile wird mit id = 2
angezeigt .