Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como dividir uma string no SQL Server

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 .