sql >> Databáze >  >> RDS >> PostgreSQL

Jak rozdělit řetězec v PostgreSQL

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 .


  1. Extrahujte rok z data v PostgreSQL

  2. SQL Server 2016:Návrhář dotazů

  3. Jak definovat primární klíč automatického zvýšení v PostgreSQL

  4. Jak funguje REGEXP_SUBSTR() v MariaDB