Separar texto com ‘;’ em ‘n’ colunas

E aí pessoal, tudo belezinha com vocês? Segue um post rápido, só para registrar um assunto que rolou em um grupo de discussão do Telegram há algum tempo atrás e só agora eu resolvi parar para escrever a respeito…

Pense no seguinte cenário:

Eu tenho uma tabela onde uma das colunas é um campo texto (varchar(XXX)), separado por ‘;’ (ou qualquer outro caractere de sua preferência).

Mas porque eu teria isso? Bom, imagine que você crie uma trigger para a fazer sua auditoria e, ao invés de guardar em colunas, você guarda em um varchar as alterações…

O objetivo: Agora mudaram de ideia e precisam fazer com que esse texto retorne como colunas em uma query.

Algo assim:

Spoiler Alert

Algumas observações:

  • Vou trabalhar com uma quantidade fixa de colunas (supor que o máximo é 6), mas é totalmente possível investigar quantas colunas tem no maior texto, para criar a tabela.
  • Se houver um campo vazio (;;), devo deixar o campo como NULL

Vamos lá…

Simples, não? 🙂

Lembrete importante: Devido ao uso do STRING_SPLIT, essa consulta só vai rodar acima do SQL Server 2016.

Valeu pessoal! Bons estudos!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.