Problem:
Du vil opdele en streng i PostgreSQL.
Eksempel 1:
Du har en sætning, og du vil gerne opdele den med mellemrumstegnet.
Løsning 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Resultatet ser således ud:
dele |
---|
Det er |
en |
eksempel |
sætning. |
Diskussion:
For at få alle dele af sætningen som elementer i et array i PostgreSQL, skal du bruge funktionen string_to_array(text, delimiter). Teksten er den tekst, du gerne vil opdele, og afgrænsningstegnet er den streng (her et mellemrum), som du gerne vil opdele teksten med. En simpel brug af string_to_array(text, delimiter)
funktion:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
vil returnere følgende resultat:
dele |
---|
{Det er,et,eksempel,sætning.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Dette vil producere en kolonne med alle strengdele, hver i en separat række.
Eksempel 2:
I sentences
tabel, er der nogle sætninger.
sætning |
---|
Dette er den første sætning. |
Og her er den anden. |
Du vil opdele sætningerne med mellemrumstegnet.
Løsning 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Resultatet ser således ud:
dele |
---|
Dette |
er |
den |
først |
sætning. |
Og |
her er |
den |
andet |
én. |
Diskussion:
Ligesom i det foregående eksempel, brug funktionerne string_to_array(tekst, afgrænser) og unnest(array). Teksten skal være kolonnenavnet (sætning), men afgrænsningstegnet er stadig mellemrummet (' '). Denne gang bruger du data fra tabellen, så du skal bruge FROM nøgleordet sammen med tabelnavnet.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Eksempel 3:
I sentences
tabel, er der to kolonner:id
og sentence
.
id | sætning |
---|---|
1 | Dette er den første sætning. |
2 | Og her er den anden. |
Du vil opdele sætningerne med mellemrumstegnet.
Løsning 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Resultatet ser således ud:
id | dele |
---|---|
1 | Dette |
1 | er |
1 | den |
1 | først |
1 | sætning. |
2 | Og |
2 | her er |
2 | den |
2 | andet |
2 | én. |
Diskussion:
Dette eksempel ligner meget, men du vil også gerne se id
kolonne. For at se denne kolonne skal du blot tilføje den til SELECT
liste og husk at medtage kommaet. Du vil se sætningens ID sammen med delene af sætningerne i resultatet. For eksempel er den første sætning opdelt i 5 dele, og den har ID'et 1
. Derfor vil ID'et for alle 5 dele i resultatet være 1
. Den næste sætning med ID'et 2
, er også opdelt i 5 dele, og hver af disse dele vil blive vist med id = 2
.