Concatenar Duas Colunas no Postgres / Sql Server / MySQL

1 09 2007

No Postgres

Para concatenar duas colunas no postgres, ou duas strings utilize ||

SELECT  colunaA || colunaB as colunaAB FROM tabela

Contribuição do meu amigo Ivan:

Se você tiver uma coluna que possa ter um valor nulo então é necessário utilizar o operador coalesce pois NULL concatenado com qualquer coisa dá NULL.

SELECT (coalesce((colunaA),'') || coalesce((colunaB),'')) AS colunaAB FROM tabela

Caso seja necessário concatenar colunas do tipo int então será necessário antes disso converter os

coalesce(cast(colunaA as varchar),'') || coalesce(cast(colunaB as varchar), '') as colunaAB

No SQL Server

O sinal de + é usado para concatena strings, desta forma:

SELECT coluna1 + coluna2 as coluna12 FROM tabela

irá concatenar a coluna1 com a coluna2.

Caso sua coluna seja de um tipo diferente, inteiro ou float por exemplo será necessário fazer um cast desta forma:

SELECT  (cast(coluna1 as varchar) + ' - ' +  cast(coluna2 as varchar)) as coluna12   FROM tabela

Caso uma coluna puder ser nula então use o IsNul(coluna1,’ ‘) para trocar seu valor nulo por um espaço pois lembrem-se nulo com qualquer coisa é sempre nulo.

No MySQL

SELECT concat(coluna1,’ – ‘,coluna2) FROM tabela

coalesce(cast(funcionario_associado.ass_cod as varchar),”) || coalesce(cast(fa.ass_cod as varchar), ”) as ass_cod,

Ações

Information

26 responses

10 03 2008
omailing

Olá, não tenho experência em SQL, mas, tenho um banco de dados enorme, e preciso concatenar duas colonas inteiras. Como poderia fazer isso no Access?

Vlw.

10 03 2008
battisti

Se você quer fisicamente transformar duas colunas em uma só a minha dica é:

1 – Crie a nova coluna
2 Рvoc̻ deve estar usando asp, fa̤a um script em asp que percorra todas as linhas dessa tabelas e fa̤a o update de sua nova colunas

E mais uma coisa troca esse banco Access tem problemas crônicos por exemplo ele não possui ferramenta remota de gerência e o que é pior, você precisa do Access na máquina para poder gerenciar o banco. Fica a dica se puder troca de banco meta bala, usa mysql, postgres tem um monte de banco com e livre flw

12 03 2008
omailing

Opa, obrigado!
Usei o DataBase View Editor comandos:

SELECT colunaA + colunaB as colunaAB FROM tabelaX

Deu certo, o problema agora é outro:
Esta pesquisa me deu uma coluna de registros, agora preciso importá-la para um banco de dados, achar coincidências e exportar as tabelas deste banco.

Poderia me ajudar?

12 03 2008
battisti

Bom ai depende do que o teu banco destino aceita, no caso de um mysql por exemplo você pode exportar um cvs, ou ainda uma solução mais genérica e que funciona para todos os bancos é fazer um script que leia a linhas que essa sua consulta te retornou e gere os INSERT INTO, depois executa este resultado no teu banco de destino.

18 06 2009
Diego

Boa tarde, estou com um problema onde preciso comparar um campo concatenado no SQL sever e não estou conseguindo a sintaxe é a :

SELECT campo1, campo2 FROM tabela WHERE (campo1 + campo2) campo3

todos são campos de texto, alguém pode me ajudar por favor ?

Att’
Diego.

18 06 2009
battisti

tenta assim

SELECT campo1, campo2, (campo1+campo2) as teste FROM tabela WHERE teste = ‘teeee’

23 06 2009
nathan

por favor, no exemplo do sql como resolver caso apareça no meio das selecoes um valor em uma das colunas NULL? obrigado!

24 06 2009
battisti

essa coluna que ta voltando NULL é de que tipo, se for varchar da uma olhada se o valor default do campo esta null, se sim deixa em braco, ou tenta fazer um casta igual o que foi feito com o postgres

24 06 2009
nathan

na realidade é uma tabela importada do excell, que eu preciso jogar em uma tabela do sistema… o campo de destino é um varchar agora o de origem(excell) nvarchar…

24 08 2009
Joni

Opa… Muito boa a dica… Me salvou hoje utilizando o MySQL.

Abraços!!

30 09 2009
Willians

o post é bem antiguinho, mas…. há outra forma de concatenar semelhante ao postgreSQL?

No Oracle você pode concatenar igual o ao postgre ( utilizando 2 pipe’s “||” )

30 09 2009
Willians

digo… se há como concatenar no MySQL semelhante ao postgreSQL… há como?

13 02 2010
Marcio

Uso o mysql fiz um Concat mas ele nao exibe no dbgrid do meu delphi…
o que faço?

se puder me ajudar obrigado

17 02 2010
battisti

pootz cara delphi não eh a minha praia !

/** * [s] Anselmo Battisti * —————————- * Cadastro On-Line de Cliente * http://clientec.com.br **/

________________________________

26 03 2010
Priscila

Ola, gostaria muito da sua ajuda… eu estou tentando fazer um select numa tabela no Postgre, é o seguinte código:

select prod.nome, forn.razaosocial from PRODUTOS AS prod, FORNECEDOR as forn, CATEGORIA_PRODUTO as catprod
where prod.cod_categoria = ’11’ and forn.codigo = 3 and forn.codigo = 4

O problema é, não retorna nada!! no meu select eu quero que ele traga os produtos de uma certa categoria, mas se sejam de dois fornecedores, e eu não estou conseguindo.. Alguém se habilita? Beijoo!

26 03 2010
an2nathan

priscila desculpe respondi por fora do responder mas segue ai a resposta, espero ter ajudado!

31 01 2012
Hermes

select prod.nome, forn.razaosocial from PRODUTOS AS prod, FORNECEDOR as forn, CATEGORIA_PRODUTO as catprod
where prod.cod_categoria = ’11′ and forn.codigo IN (3,4);

Isso deve resolver seu problema 😀

26 03 2010
an2nathan

priscila faz da seguinte forma;

select prod.nome, forn.razaosocial from PRODUTOS AS prod, FORNECEDOR as forn, CATEGORIA_PRODUTO as catprod
where prod.cod_categoria = ‘11′ and forn.codigo = 3 or prod.cod_categoria = ‘11′ and forn.codigo = 4

observe o seguinte apos a clausula ‘or’ voce tem que repetir todos os criterios se nao o resultado é equivocado! veja se lhe ajuda!

29 03 2010
Anselmo Battisti

sugiro colocar os WHERE entre parênteses para aumentar legibilidade de sua SQL, além de usar o OR no lugar do AND antes do último parâmetro!

29 03 2010
an2nathan

anselmo voce diz deixar assim;

select prod.nome, forn.razaosocial from PRODUTOS AS prod, FORNECEDOR as forn, CATEGORIA_PRODUTO as catprod
where (prod.cod_categoria = ‘11′ and forn.codigo = 3) or (prod.cod_categoria = ‘11′ and forn.codigo = 4)

? obrigado

18 11 2010
ABR

boa tarde, entao tenho a seguinte duvida, eu consigo concatenar a mesma coluna, por exemplo, select concat(id_compra,”-“) as cod_compra, id_cliente, sum(valor) as total from compras group by id_cliente

oq eu quero é concatenar o id_compra com o id_compra da proxima linha, por exemplo o cliente, comprou dia 10, $100, dia 20 $50, a compra do dia 10 tem id 90 e a do dia 20 tem id 234, queria armazenar os valores dos ids das compras assim 90-234 no cod_compra e assim por diante, sei fazer isso no php mas queria ja otimizar e fazer direto na query.

att
Abr Vanelli

30 11 2010
battisti

Você precisa fazer um cast para string antes de concatenas as colunas

25 04 2011
Carlos A. Junior

…estou acostumado com MySQL com a função CONCAT(x, y, z) …tive que procurar para saber no MySQL.

Valeu pelo post.

9 11 2011
Rafael Jaques

Grande Anselmo!

Me salvou a pele! Concat não funciona no Postgre antigo!

Valeu!

30 11 2011
Concatenação de Campos no PostgreSQL | Tas Blog: Tiago Silva

[…] Anselmo – Concatenar duas Colunas no PostgreSQL, MySQL e SQL Server […]

24 07 2017
Concatenação de Campos no PostgreSQL | Prof. Tiago A. Silva

[…] Anselmo – Concatenar duas Colunas no PostgreSQL, MySQL e SQL Server […]

Deixe um comentário