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 .