Problem:
Chcesz podzielić ciąg w PostgreSQL.
Przykład 1:
Masz zdanie i chcesz je podzielić przez spację.
Rozwiązanie 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Wynik wygląda tak:
części |
---|
To jest |
i |
przykład |
zdanie. |
Dyskusja:
Aby uzyskać wszystkie części zdania jako elementy tablicy w PostgreSQL, użyj funkcji string_to_array(text, delimiter). Tekst to tekst, który chcesz podzielić, a ogranicznik to ciąg (tutaj spacja), według którego chcesz podzielić tekst. Proste użycie string_to_array(text, delimiter)
funkcja:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
zwróci następujący wynik:
części |
---|
{To,przykład,zdanie.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Spowoduje to utworzenie kolumny ze wszystkimi częściami ciągu, każda w osobnym wierszu.
Przykład 2:
W sentences
tabeli, jest kilka zdań.
zdanie |
---|
To jest pierwsze zdanie. |
A oto druga. |
Chcesz podzielić zdania znakiem spacji.
Rozwiązanie 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Wynik wygląda tak:
części |
---|
To |
jest |
pierwszy |
zdanie. |
I |
oto |
inne |
jeden. |
Dyskusja:
Podobnie jak w poprzednim przykładzie, użyj funkcji string_to_array(text, delimiter) i unnest(array). Tekst powinien być nazwą kolumny (zdaniem), ale separatorem nadal jest spacja (' '). Tym razem używasz danych z tabeli, więc musisz użyć słowa kluczowego FROM wraz z nazwą tabeli.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Przykład 3:
W sentences
tabela, są dwie kolumny:id
i sentence
.
id | zdanie |
---|---|
1 | To jest pierwsze zdanie. |
2 | A oto druga. |
Chcesz podzielić zdania znakiem spacji.
Rozwiązanie 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Wynik wygląda tak:
id | części |
---|---|
1 | To |
1 | jest |
1 | |
1 | pierwszy |
1 | zdanie. |
2 | I |
2 | oto |
2 | |
2 | inne |
2 | jeden. |
Dyskusja:
Ten przykład jest bardzo podobny, ale chcesz również zobaczyć id
kolumna. Aby zobaczyć tę kolumnę, po prostu dodaj ją do SELECT
listę i pamiętaj, aby wstawić przecinek. Zobaczysz identyfikator zdania wraz z częściami zdań w wyniku. Na przykład pierwsze zdanie jest podzielone na 5 części i ma identyfikator 1
. Dlatego identyfikatorem wszystkich 5 części w wyniku będzie 1
. Następne zdanie o identyfikatorze 2
, jest również podzielony na 5 części, a każda z tych części będzie pokazana z id = 2
.