Dividir Texto com Separador com o SQL Server STRING_SPLIT

A funcionalidade de dividir texto em diferentes linhas com base num separador está disponível nativamente a partir do SQL Server 2016.

Para dividir texto com separador em linhas com o SQL Server, utilizei funções definidas pelo utilizador T-SQL durante anos antes do lançamento do STRING_SPLIT na versão 2016. De facto, a partir do SQL Server 2016, uma nova função integrada permite esta funcionalidade. É a função T-SQL STRING_SPLIT.

1. Dividir texto com valores separados por vírgulas em SQL Server

Para este primeiro exemplo, um caso de uso comum para STRING_SPLIT é dividir uma string de valores separados por vírgulas (CSV) em linhas individuais.

SELECT value
FROM STRING_SPLIT('Apple,Orange,Banana,Grapes,Mango', ','); 

-- Use o segundo exemplo para renomear a coluna
SELECT value as Fruit
FROM STRING_SPLIT('Apple,Orange,Banana,Grapes,Mango', ','); 
Dividir Texto com Separador em Linhas com a função SQL Server STRING_SPLIT
Dividir Texto com Separador em Linhas com a função SQL Server STRING_SPLIT

2. Analisar texto com separador de ponto e vírgula em linhas com o SQL Server

Outra aplicação prática é dividir uma string de emails separados por ponto e vírgula em linhas individuais.

SELECT value as [Email]
FROM STRING_SPLIT('example1@email.com;example2@email.com;example3@email.com', ';')

Isso retornará uma tabela onde cada linha contém um único endereço de email da string original.

3. Dividir texto de variável em múltiplas linhas

Então, neste terceiro exemplo, utilizamos cidades. O objetivo é alcançar o mesmo resultado mas utilizando variáveis para armazenar a string e o separador. O código é mais flexível e pode lidar com dados vindos de uma tabela, por exemplo.

-- Declaração de variáveis
DECLARE 
@String nvarchar(max), 
@Separator char(1);

-- Inicialização da string e do Separador
SET @String = 'New York;Los Angeles;Chicago;Houston;Phoenix;Philadelphia;San Antonio;San Diego;Dallas;San Jose';
SET @Separator = ';';

-- Utilizar o STRING_SPLIT aqui em vez da solução XML
SELECT @String = STRING_SPLIT ( @String , @Separator );

Sobre a Função T-SQL STRING_SPLIT

A função STRING_SPLIT no SQL Server é uma ferramenta poderosa para manipulação de texto, permitindo a dividir texto com separador em linhas com o SQL Server. Seja lidando com dados CSV ou analisando strings complexas, STRING_SPLIT oferece uma solução direta para converter texto delimitado em linhas separadas. Sua simplicidade e eficácia tornam-na uma característica essencial para desenvolvedores e administradores de banco de dados que lidam com processamento de texto e tarefas de transformação de dados.

Dividir uma string com delimitadores em várias colunas

E se precisar armazenar cada valor numa coluna separada, por exemplo, para preparar a importação de ficheiros csv com cabeçalho? Aqui está outro tutorial com um exemplo de como selecionar cada valor da variável @String em colunas dedicadas separadas.

Tutorial completo sobre como Dividir texto delimitado em colunas no SQL Server

Seja o primeiro a comentar

Deixe uma resposta

O seu endereço de email não será publicado.


*