MySQL combina duas colunas em uma coluna

106

Estou tentando encontrar uma maneira de combinar duas colunas em uma, mas continuo obtendo o valor '0' na coluna, em vez da combinação das palavras.

Estas são as que tentei tão bem quanto outras:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

Alguém poderia me dizer o que estou fazendo de errado?

aab
fonte
1
Qual banco de dados você está usando? Quais são os tipos das duas colunas?
Gordon Linoff
Confira: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
Use a solução da resposta principal, mas adicione um cano. selecione concat (coluna1, '|', coluna2). Isso ajuda no excel depois
Cosmic Hawk

Respostas:

167

Meu palpite é que você está usando o MySQL, onde o +operador faz a adição, junto com a conversão silenciosa dos valores em números. Se um valor não começar com um dígito, o valor convertido será 0.

Então tente isso:

select concat(column1, column2)

Duas maneiras de adicionar um espaço:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Gordon Linoff
fonte
estou usando sql server 2005e está apresentando um erro comoIncorrect syntax near ')'.
hud
5
@coder. . . Esta questão foi marcada como "mysql". Se você tiver uma pergunta sobre o SQL Server, faça-a como uma pergunta, não como um comentário.
Gordon Linoff
Funciona também para T-SQL, solução excelente e simples. Reduz duas colunas em uma.
Ryan Battistone
23

Tente isso, funciona para mim

select (column1 || ' '|| column2) from table;
Oreniwa Babatunde
fonte
1
Parece Oracle.
coburne
Isso funcionou para combinar várias (mais de 2) colunas também. Thx
Kayathiri 01 de
O padrão SQL fornece a função CONCAT () para concatenar duas strings em uma única string. SQLite, entretanto, não suporta a função CONCAT (). Em vez disso, ele usa o operador concatenar (||) para juntar duas strings em uma.
PaulH
14

É trabalho para mim

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
sk juli kaká
fonte
5

Esta é a única solução que funcionaria para mim, quando eu solicitei um espaço entre as colunas sendo mescladas.

select concat(concat(column1,' '), column2)
mattk
fonte
3

Para os fãs do MySQL, gosto da IFNULL()função. Outras respostas aqui sugerem funcionalidade semelhante com a ISNULL()função em algumas implementações. Na minha situação, tenho uma coluna de descrições, que é NOT NULL, e uma coluna de números de série, que podem ser. NULLFoi assim que os combinei em uma coluna:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

Meus resultados sugerem que os resultados da concatenação de uma string com NULLresultados em a NULL. Tenho obtido o valor alternativo nesses casos.

2NinerRomeo
fonte
3

Se você estiver trabalhando em Oracle:

SELECT column1 || column2 AS column3
FROM table;

OU

Se você estiver trabalhando no MySql, faça o seguinte:

SELECT Concat(column1 ,column2) AS column3
FROM table;
Balaji Dongare
fonte
1

Eu usei esse caminho e é o melhor para sempre. Neste código, nulo também manipulado

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

Experimente isso ...

Sunil Acharya
fonte
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
fonte
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Ravin
fonte
Maneira simples de combinar
Ravin