Problema:
Você deseja dividir uma string no PostgreSQL.
Exemplo 1:
Você tem uma frase e gostaria de dividi-la pelo caractere de espaço.
Solução 1:
SELECT unnest(
string_to_array('It''s an example sentence.', ' ')
) AS parts;
O resultado fica assim:
| partes |
|---|
| É |
| um |
| exemplo |
| frase. |
Discussão:
Para obter todas as partes da frase como elementos de um array no PostgreSQL, use a função string_to_array(texto, delimitador). O texto é o texto que você gostaria de dividir, e o delimitador é a string (aqui, um espaço) pela qual você gostaria de dividir o texto. Um uso simples do
string_to_array(text, delimiter) função:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
retornará o seguinte resultado:
| partes |
|---|
| {É,um,exemplo,sentença.} |
SELECT unnest(
string_to_array('It''s an example sentence.', ' ')
) AS parts;
Isso produzirá uma coluna com todas as partes da string, cada uma em uma linha separada.
Exemplo 2:
Nas
sentences tabela, há algumas frases. | frase |
|---|
| Esta é a primeira frase. |
| E aqui está o outro. |
Você deseja dividir as frases pelo caractere de espaço.
Solução 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
O resultado fica assim:
| partes |
|---|
| Isto |
| é |
| o |
| primeiro |
| frase. |
| E |
| aqui |
| o |
| outro |
| um. |
Discussão:
Assim como no exemplo anterior, use as funções string_to_array(texto, delimitador) e unnest(array). O texto deve ser o nome da coluna (frase), mas o delimitador ainda é o espaço (' '). Desta vez, você usa os dados da tabela, portanto, precisa usar a palavra-chave FROM junto com o nome da tabela.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Exemplo 3:
Nas
sentences tabela, existem duas colunas:id e sentence . | id | frase |
|---|---|
| 1 | Esta é a primeira frase. |
| 2 | E aqui está o outro. |
Você deseja dividir as frases pelo caractere de espaço.
Solução 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
O resultado fica assim:
| id | partes |
|---|---|
| 1 | Isso |
| 1 | é |
| 1 | o |
| 1 | primeiro |
| 1 | frase. |
| 2 | E |
| 2 | aqui está |
| 2 | o |
| 2 | outro |
| 2 | um. |
Discussão:
Este exemplo é muito semelhante, mas você também deseja ver o
id coluna. Para ver esta coluna, basta adicioná-la ao SELECT lista e lembre-se de incluir a vírgula. Você verá o ID da sentença junto com as partes das sentenças no resultado. Por exemplo, a primeira frase é dividida em 5 partes e tem o ID 1 . Portanto, o ID para todas as 5 partes no resultado será 1 . A próxima frase, com o ID 2 , também é dividido em 5 partes, e cada uma dessas partes será mostrada com id = 2 .