Problem:
Du vill dela en sträng i PostgreSQL.
Exempel 1:
Du har en mening och du vill dela den med mellanslagstecknet.
Lösning 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Resultatet ser ut så här:
delar |
---|
Det är |
en |
exempel |
mening. |
Diskussion:
För att få alla delar av meningen som element i en array i PostgreSQL, använd funktionen string_to_array(text, delimiter). Texten är den text du vill dela upp, och avgränsaren är strängen (här ett mellanslag) som du vill dela texten med. En enkel användning av string_to_array(text, delimiter)
funktion:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
kommer att returnera följande resultat:
delar |
---|
{Det är,ett,exempel,mening.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Detta kommer att producera en kolumn med alla strängdelar, var och en i en separat rad.
Exempel 2:
I sentences
tabell, det finns några meningar.
mening |
---|
Detta är den första meningen. |
Och här är den andra. |
Du vill dela meningarna med blanksteg.
Lösning 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Resultatet ser ut så här:
delar |
---|
Detta |
är |
den |
först |
mening. |
Och |
här är |
den |
annat |
ett. |
Diskussion:
Precis som i föregående exempel, använd funktionerna string_to_array(text, avgränsare) och unnest(array). Texten ska vara kolumnnamnet (mening), men avgränsaren är fortfarande mellanslag (' '). Den här gången använder du data från tabellen, så du måste använda nyckelordet FROM tillsammans med tabellnamnet.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Exempel 3:
I sentences
tabell, det finns två kolumner:id
och sentence
.
id | mening |
---|---|
1 | Detta är den första meningen. |
2 | Och här är den andra. |
Du vill dela meningarna med blanksteg.
Lösning 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Resultatet ser ut så här:
id | delar |
---|---|
1 | Detta |
1 | är |
1 | den |
1 | först |
1 | mening. |
2 | Och |
2 | här är |
2 | den |
2 | annat |
2 | en. |
Diskussion:
Det här exemplet är väldigt likt, men du vill också se id
kolumn. För att se den här kolumnen lägger du bara till den i SELECT
lista och kom ihåg att inkludera kommatecken. Du kommer att se meningens ID tillsammans med delarna av meningarna i resultatet. Till exempel är den första meningen uppdelad i 5 delar, och den har ID:t 1
. Därför kommer ID:t för alla 5 delarna i resultatet att vara 1
. Nästa mening, med ID:t 2
, är också uppdelad i 5 delar, och var och en av dessa delar kommer att visas med id = 2
.