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.
Tabela de Conteúdos
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', ',');
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