quinta-feira, 19 de março de 2009

Artigo Nº 20: Concatenando resultados diretamente na SQL

Hoje vai aí um post sobre SQL, simples mas muito útil: concatenação de resultados em um select.

Acredito que quase todos os programadores em algum momento, precisou concatenar várias colunas de uma função select, agrupando em uma única coluna. Para isso, quem não conhece ou conhecia esse tipo de concatenação, resolve agrupando no próprio código de programação. Um exemplo que posso escrever é: para programadores .net que trabalha com POO(Programação Orientadas a Objetos) ou em camadas, resolve esse problema criando uma function que vai retorna em um formato de DateTable, dentro dessa function monta a SQL, depois manda executa a função para retornar os dados. Daí depois de passar pelo banco, lê cada resultado e manualmente cria-se uma nova coluna onde o valor vai ser a concatenação entre os duas ou mais colunas do resultado: Ex: Coluna 03 = ColunaSQL1 +'/'+ ColunaSQL2;

Bom, aí vai os exemplos de como proceder em diversos bancos de dados:

FIREBIRD
SELECT (COLUNA1 ||' - '|| COLUNA2) as RESULTADO from TABELA

SQL SERVER
SELECT (CAST(COLUNA1 AS VARCHAR)+' - '+ CAST(COLUNA2 AS VARCHAR)) AS RESULTADO FROM TABEL

POSTGREE
SELECT (COLUNA1 ||' - '|| COLUNA2) AS RESULTADO FROM TABELA

MYSQL
SELECT CONCAT(COLUNA1,' - ',COLUNA2) AS RESULTADO FROM TABELA

Esses são os exemplos de concatenação. Pode-se concatena quantas colunas que necessita, sempre seguindo as sintaxe.

Caso sua aplicação está voltada para conexão independente de banco, tome cuidado ao utilizar essas funções, crie uma forma de parametrizações que quando trocar de banco chame a sintaxe de acordo com o banco.

Obrigado. Abraços.