Probleem:
Je wilt een string splitsen in PostgreSQL.
Voorbeeld 1:
Je hebt een zin en je wilt deze splitsen door de spatie.
Oplossing 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Het resultaat ziet er als volgt uit:
onderdelen |
---|
Het is |
een |
voorbeeld |
zin. |
Discussie:
Gebruik de functie string_to_array(text, delimiter) om alle delen van de zin als elementen van een array in PostgreSQL te krijgen. De tekst is de tekst die u wilt splitsen en het scheidingsteken is de tekenreeks (hier een spatie) waarmee u de tekst wilt splitsen. Een eenvoudig gebruik van de string_to_array(text, delimiter)
functie:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
geeft het volgende resultaat:
onderdelen |
---|
{Het is,een,voorbeeld,zin.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Dit levert een kolom op met alle stringdelen, elk in een aparte rij.
Voorbeeld 2:
In de sentences
tabel, er zijn enkele zinnen.
zin |
---|
Dit is de eerste zin. |
En hier is de andere. |
U wilt de zinnen splitsen op het spatieteken.
Oplossing 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Het resultaat ziet er als volgt uit:
onderdelen |
---|
Dit |
is |
de |
eerste |
zin. |
En |
hier is |
de |
andere |
een. |
Discussie:
Gebruik net als in het vorige voorbeeld de functies string_to_array(text, delimiter) en unnest(array). De tekst moet de kolomnaam (zin) zijn, maar het scheidingsteken is nog steeds de spatie (' '). Deze keer gebruikt u de gegevens uit de tabel, dus u moet het FROM-sleutelwoord samen met de tabelnaam gebruiken.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Voorbeeld 3:
In de sentences
tabel, zijn er twee kolommen:id
en sentence
.
id | zin |
---|---|
1 | Dit is de eerste zin. |
2 | En hier is de andere. |
U wilt de zinnen splitsen op het spatieteken.
Oplossing 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Het resultaat ziet er als volgt uit:
id | onderdelen |
---|---|
1 | Dit |
1 | is |
1 | de |
1 | eerste |
1 | zin. |
2 | En |
2 | hier is |
2 | de |
2 | andere |
2 | één. |
Discussie:
Dit voorbeeld lijkt erg op elkaar, maar u wilt ook de id
. zien kolom. Om deze kolom te zien, voegt u deze toe aan de SELECT
lijst en vergeet niet de komma op te nemen. U ziet de ID van de zin samen met de delen van de zinnen in het resultaat. De eerste zin is bijvoorbeeld opgesplitst in 5 delen en heeft de ID 1
. Daarom is de ID voor alle 5 delen in het resultaat 1
. De volgende zin, met de ID 2
, is ook opgesplitst in 5 delen, en elk van deze delen wordt getoond met id = 2
.