Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 T-SQL Tips: Concatenando e Agrupando
Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 T-SQL Tips: Concatenando e Agrupando -->
 
Avaliação: | Publicado em: 06/02/2008
SQL Server 2005 T-SQL Tips: Concatenando e Agrupando
Gustavo Maia Aguiar é graduado em Administração de Empresas e pós-graduado em bancos de dados, atua na área de tecnologia de informação desde 2001, exercendo funções de desenvolvedor, analista, administrador de banco de dados (DBA) e administrador de dados (AD). É profissional certificado (MCP, MOS, MCDBA, MCAD, MCTS, MCITP, MCT, MVP e Itil Certified Professional). Já trabalhou em instituições do governo, iniciativa privada e parceiros Microsoft em atividades de suporte, consultoria e treinamento. É membro ativo e moderador dos fóruns de SQL Server do MSDN e TechNet e das comunidades SQL Server Brasil e SQL Brasil (Orkut). Semanalmente publica artigos de banco de dados e SQL Server em seu blog.
SQL Server 2005 T-SQL Tips: Concatenando e Agrupando

Em alguns fóruns, comunidades e grupos de e-mail dos quais participo, tenho visto uma dúvida bastante comum referente a manipulação de strings. As frases abaixo relatam bem o que quero dizer. Se você se identificar com alguma delas, certamente esse deve ser um artigo esperado já que em poucos lugares encontrei as soluções.

  • "Possuo um cadastro de pedidos e gostaria de listar o nome dos produtos em cada pedido delimitado por ponto e vírgula"
  • "Tem como fazer uma consulta que retorne vários registros em um único campo separado por ponto e vírgula ?"
  • "Tenho um relatório complexo e precisava retornar a relação de vários códigos em uma única coluna delimitado por ponto e vírgula"

Em minha opinião, juntar vários registros em uma única coluna delimitada por ponto e vírgula é sem dúvida uma necessidade de formatação de dados. As boas práticas da arquitetura N camadas condenam esse tipo de prática e certamente as camadas de apresentação e aplicação são bem mais adequadas a "separar" registros e delimitá-los com ponto e vírgula. Sou árduo defensor dessas práticas, mas assim como toda regra, existem momentos em que podem haver exceções.

Se houver a disponibilidade de uma ferramenta de terceiros, de um componente (gratuito, pago ou desenvolvido em casa) ou de algum código pronto (ainda que complexo) para realizar tarefas de formatação, talvez não seja uma boa idéia colocar esse tipo de lógica na camada de banco de dados. Essa camada deve estar disponível para a realização de consultas rápidas, operações eficientes de manipulação (Ins, Upd, Del) e gerenciamento eficiente de recursos de memória e não "desperdiçar" recursos de memória, CPU e disco realizando manipulações de string, formatações de datas, etc.

No entanto, em determinadas situações, construir uma lógica ou obter um componente ou ferramenta pode não ser uma alternativa viável. Nesse momento, colocar determinados "comportamentos" dentro do banco de dados é algo a ser considerado quando não a única saída. Ainda acho que a delimitação por ponto e vírgula não cabe à camada de dados, mas de qualquer forma, para essas situações em que não tem outro jeito, escrevo esse artigo com algumas formas de como concatenar vários registros em uma única coluna delimitada por ponto e vírgula.

Nesse artigo apresentarei cinco técnicas demonstrando como fazer isso no SQL Server. Algumas podem ser utilizadas nas versões 7 e 2000 (com as devidas adaptações) enquanto outras funcionam apenas no SQL Server 2005. Fiz uma extensa utilização das Common Table Expressions (CTEs) em algumas alternativas para facilitar as consultas. Aqueles que ainda não conhecem as CTEs podem ler a respeito ao término do artigo na sessão de links relacionados.

Páginas: « Anterior 1 2 3 4 5 6 7 8 Próximo »  Próximo: O exemplo »


Eh massa mais naum consigo instala tem como ajudar ::?? Pelo Amor de Deus MAIS SERIO Mermu ajuda aeee Se Pode=D

Fica Com Deus
Grande Gustavo,
Muito seu artigo, você esmiuça a concatenação de uma forma muito particular. Trazendo opções que não conhecia. Me enriqueceu bastante. A propósito nos conhecemos na consultoria do MTE.

Abraço








Um produto Detetive.net