Problema:
Você deseja dividir uma string no SQL Server.
Exemplo 1:
Você tem uma frase e gostaria de dividi-la pelo caractere de espaço.
Solução 1:
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
O resultado fica assim:
valor |
---|
Um |
exemplo |
frase. |
Discussão:
A função STRING_SPLIT(string, separator) no SQL Server divide a string no primeiro argumento pelo separador no segundo argumento. Para dividir uma frase em palavras, especifique a frase como o primeiro argumento do
STRING_SPLIT()
função e ' ' como o segundo argumento. STRING_SPLIT()
resulta em uma coluna denominada value. Para obter cada parte da string em uma linha separada, selecione o valor de STRING_SPLIT(string, separator)
. Por exemplo, SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Claro, você pode dividir uma string usando algum outro separador, por exemplo, a vírgula. Você também pode renomear a coluna como qualquer outra coluna.
Exemplo 2:
Nos
texts
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 value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
O resultado fica assim:
valor |
---|
Isto |
é |
o |
primeiro |
frase. |
E |
aqui |
o |
outro |
um. |
Discussão:
Assim como no exemplo anterior, a função STRING_SPLIT(texto, separador) divide a string fornecida como primeiro argumento pelo separador. Desta vez, você tem algumas frases para cuidar; essas frases são armazenadas nos
texts
tabela. É por isso que você precisa usar CROSS APPLY; mais especificamente, texts CROSS APPLY STRING_SPLIT(sentence, ' ')
Use-o no
FROM
cláusula. Isso significa que o lado direito (STRING_SPLIT(sentence, ' ')
) é aplicado a cada linha da tabela do lado esquerdo (texts
). É por isso que o lado direito pode usar as colunas da tabela do lado esquerdo (aqui, a coluna de sentença dos texts
tabela.) Aqui está a consulta que você recebe. SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Exemplo 3:
Nos
texts
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 e também mostrar os IDs das frases.
Solução 3:
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
O resultado fica assim:
id | valor |
---|---|
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 na tabela de resultados 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
.