Problém:
Chcete rozdělit řetězec v PostgreSQL.
Příklad 1:
Máte větu a chtěli byste ji rozdělit mezerou.
Řešení 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Výsledek vypadá takto:
části |
---|
Je to |
an |
příklad |
věta. |
Diskuse:
Chcete-li získat všechny části věty jako prvky pole v PostgreSQL, použijte funkci string_to_array(text, oddělovač). Text je text, který chcete rozdělit, a oddělovač je řetězec (zde mezera), kterým chcete text rozdělit. Jednoduché použití string_to_array(text, delimiter)
funkce:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
vrátí následující výsledek:
části |
---|
{Je to, příklad, věta.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Tím vytvoříte sloupec se všemi částmi řetězce, každý v samostatném řádku.
Příklad 2:
Ve sentences
tabulky, jsou tam nějaké věty.
věta |
---|
Toto je první věta. |
A tady je ten druhý. |
Chcete rozdělit věty podle mezery.
Řešení 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Výsledek vypadá takto:
části |
---|
Toto |
je |
the |
první |
věta. |
A |
tady |
the |
jiné |
jedna. |
Diskuse:
Stejně jako v předchozím příkladu použijte funkce string_to_array(text, delimiter) a unnest(array). Text by měl být název sloupce (věta), ale oddělovačem je stále mezera (' '). Tentokrát použijete data z tabulky, takže spolu s názvem tabulky musíte použít klíčové slovo FROM.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Příklad 3:
Ve sentences
tabulka má dva sloupce:id
a sentence
.
id | věta |
---|---|
1 | Toto je první věta. |
2 | A tady je ten druhý. |
Chcete rozdělit věty podle mezery.
Řešení 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Výsledek vypadá takto:
id | části |
---|---|
1 | Toto |
1 | je |
1 | |
1 | první |
1 | věta. |
2 | A |
2 | tady |
2 | |
2 | jiné |
2 | jeden. |
Diskuse:
Tento příklad je velmi podobný, ale chcete také vidět id
sloupec. Chcete-li zobrazit tento sloupec, přidejte jej do SELECT
seznam a nezapomeňte uvést čárku. Ve výsledku uvidíte ID věty spolu s částmi vět. Například první věta je rozdělena na 5 částí a má ID 1
. Proto bude ID všech 5 částí ve výsledku 1
. Další věta s ID 2
, je také rozdělena na 5 částí a každá z těchto částí bude zobrazena s id = 2
.