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
.