quarta-feira, 15 de maio de 2013

Concatenando dados no SQL Server


A concatenação de dados é o resultado da junção de mais de uma informação, que podem ou não estar na mesma coluna da tabela. Um exemplo prático de concatenação que usamos em nosso dia a dia é o telefone: DDD + Número.

Já abordei aqui no blog como realizar a concatenação em MySQL e PostgreSQL:
No SQL Server, em especifico nas versões anteriores a 2012, a forma de concatenação é diferente dos demais bancos de dados.

O formato nativo do é:

select 
  '(' + cod_area + ') ' + telefone
from
  clientes ;

Como vemos, os dados são concatenados com auxílio do operador + (mais).

Já na versão 2012, o SQL Server incorporou como função nativa o Concat, assim como o MySQL e Oracle:

select
  concat('(', cod_area, ')', telefone)
from
  clientes ;

É importante se ressaltar que, a concatenação de tipos de dados diferentes pode causar erros no resultado do select, fique atento quanto a isto.

Grande abraço e até a próxima.

Referências:
http://blog.sqlauthority.com/2010/11/25/sql-server-concat-function-in-sql-server-sql-concatenation/
http://msdn.microsoft.com/pt-br/library/hh231515.aspx
http://stackoverflow.com/questions/10550307/concat-function-in-sql-server

2 comentários:

  1. Uma boa prática também é usar o COALESCE combinado com o CONCAT, não sei no caso do MSSQL, mas no MySQL, uso assim:

    SELECT CONCAT(coalesce(cidade,''), ' - ', coalesce(municipio,'')) AS local FROM TABELA

    isso impede trazer a concatenação totalmente vazia, caso um dos campos concatenados seja nulo, então ele converte para vazio e concatena, trazendo:

    FORTALEZA - CE
    LAURO DE FREITAS - BA
    "CAMPO VAZIO" - SP

    ResponderExcluir
    Respostas
    1. Olá Souzace,

      Perfeita colocação, no SQL Server o comando é o isnull, com ele evitamos o retorno null no resultado do concat.

      Como sugestão no MySQL, use se for o CONCAT_WS.

      Abraços e obrigado pela contribuição.

      Excluir