PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So teilen Sie eine Zeichenfolge in PostgreSQL

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 .